[PATCH] jscript: Implement decodeURIComponent

Jacek Caban jacek at codeweavers.com
Mon Nov 16 13:12:05 CST 2009


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






More information about the wine-devel mailing list