[PATCH] jscript: Implement decodeURIComponent
Andrew Eikum
aeikum at codeweavers.com
Mon Nov 16 15:40:38 CST 2009
Jacek Caban wrote:
> Hi Andrew,
>
> Andrew Eikum wrote:
>> ---
>> dlls/jscript/global.c | 104
>> ++++++++++++++++++++++++++++++++++++++++++++-
>> dlls/jscript/tests/api.js | 20 +++++++++
>> 2 files changed, 122 insertions(+), 2 deletions(-)
>>
>
>
> + while(*ptr == '%') {
> + if(hex_to_int(*(ptr+1)) < 0 || hex_to_int(*(ptr+2)) < 0) {
> + WARN("Invalid hex sequence: 0x%x 0x%x\n", *(ptr+1),
> *(ptr+2));
> + SysFreeString(str);
> + return E_FAIL;
>
> URIError should be thrown here. If it's not, then you should put FIXME
> here. Same for other places where you return E_FAIL.
>
> + }
> + ptr += 3;
> + ++buf_len;
> + }
> + octets = heap_alloc(buf_len);
>
>
> You don't check allocation failure and leak octets here. You may avoid
> dynamic allocation at all by processing one utf8 char at the time. Then
> you know that it's not longer than 4 bytes. Ecma specification describes
> it well, although you may simplify the algorithm by checking number of
> bytes from the first byte, fetching bytes to the array and then use
> MultiByteToWideChar for conversion to UTF-16 and validation.
>
>
> Thanks,
> Jacek
>
Thanks for looking it over, Jacek. I've resent with your suggestions.
Andrew
More information about the wine-devel
mailing list