[PATCH] vbscript: Implemented String

Shuai Meng mengshuaicalendr at gmail.com
Mon Oct 20 11:13:00 CDT 2014


2014-10-20 17:00 GMT+08:00 Piotr Caban <piotr.caban at gmail.com>:

> On 10/19/14 17:44, Shuai Meng wrote:
>
>> +    newstr = SysAllocStringLen(NULL, 1023);
>>
> You need to allocate correct length string. First argument should be used
> here. You're also leaking the string in error-handling paths.

 You mean I should replace 1023 with the final number of first argument?
Seems good.

>
>
>  +
>> +    switch(V_VT(arg + 1)) {
>> +    case VT_NULL:
>> +        return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE);
>> +    case VT_BSTR:
>> +        str = V_BSTR(arg + 1);
>> +        break;
>> +    case  VT_ARRAY|VT_BYREF|VT_VARIANT:
>> +        return DISP_E_TYPEMISMATCH;
>> +    default:
>> +        hres = to_short(arg + 1, &tmp);
>> +        if(FAILED(hres))
>> +            return hres;
>> +        str[0] = (char)tmp;
>>
> Please add a test with second argument larger then 256. It would be also
> interesting to see a test with second argument being BSTR with first
> character out of ASCII range.

 In fact it is hard to check what String returns when character is larger
than 256 even below 256. For example, String(1,0) returns an empty string
on xp, but Eval(String(1,0) = "") will return false, we all know 0
represents '\0' in ASCII which is not a print character. This is the same
situation when the second argument is negative number.

> Please also check what happens if V_BSTR(arg+1)==NULL.
>
I have added such test:
Call testStringError(2, Null, 94)

>
>  +    hres = to_short(arg, &len);
>> +    if(FAILED(hres))
>> +        return hres;
>> +    if(len <  0)
>> +        return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL);
>> +    else if(len == 0)
>> +        newstr = '\0';
>> +    else if(len > 1023)
>> +        len = 1023;
>>
> I guess that first argument is probably an integer.

 Do you mean we don't need  to_short(arg, &len)?

> The length of produced string is probably also not limited to 1023
> characters.
>
I have answered this question in the reply to Nikolay~

>
> Thanks,
> Piotr
>
>
> Thanks for commenting Piotr.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20141021/be5d467a/attachment.html>


More information about the wine-devel mailing list