[PATCH] vbscript: Implemented String
Piotr Caban
piotr.caban at gmail.com
Mon Oct 20 04:00:54 CDT 2014
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.
> +
> + 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. Please also check what happens if
V_BSTR(arg+1)==NULL.
> + 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. The length of
produced string is probably also not limited to 1023 characters.
Thanks,
Piotr
More information about the wine-devel
mailing list