jscript: Properly handle \0 characters in String to{Lower,Upper}Case methods.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
cd5ea7612e
commit
54e6736032
|
@ -1402,17 +1402,19 @@ static HRESULT String_toLowerCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags
|
|||
return hres;
|
||||
|
||||
if(r) {
|
||||
unsigned len = jsstr_length(str);
|
||||
jsstr_t *ret;
|
||||
WCHAR *buf;
|
||||
|
||||
ret = jsstr_alloc_buf(jsstr_length(str), &buf);
|
||||
ret = jsstr_alloc_buf(len, &buf);
|
||||
if(!ret) {
|
||||
jsstr_release(str);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
jsstr_flush(str, buf);
|
||||
strlwrW(buf);
|
||||
for (; len--; buf++) *buf = tolowerW(*buf);
|
||||
|
||||
*r = jsval_string(ret);
|
||||
}
|
||||
jsstr_release(str);
|
||||
|
@ -1432,17 +1434,19 @@ static HRESULT String_toUpperCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags
|
|||
return hres;
|
||||
|
||||
if(r) {
|
||||
unsigned len = jsstr_length(str);
|
||||
jsstr_t *ret;
|
||||
WCHAR *buf;
|
||||
|
||||
ret = jsstr_alloc_buf(jsstr_length(str), &buf);
|
||||
ret = jsstr_alloc_buf(len, &buf);
|
||||
if(!ret) {
|
||||
jsstr_release(str);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
jsstr_flush(str, buf);
|
||||
struprW(buf);
|
||||
for (; len--; buf++) *buf = toupperW(*buf);
|
||||
|
||||
*r = jsval_string(ret);
|
||||
}
|
||||
jsstr_release(str);
|
||||
|
|
|
@ -661,6 +661,8 @@ tmp = "tEsT".toLowerCase();
|
|||
ok(tmp === "test", "''.toLowerCase() = " + tmp);
|
||||
tmp = "tEsT".toLowerCase(3);
|
||||
ok(tmp === "test", "''.toLowerCase(3) = " + tmp);
|
||||
tmp = ("tE" + String.fromCharCode(0) + "sT").toLowerCase();
|
||||
ok(tmp === "te" + String.fromCharCode(0) + "st", "''.toLowerCase() = " + tmp);
|
||||
|
||||
tmp = "".toUpperCase();
|
||||
ok(tmp === "", "''.toUpperCase() = " + tmp);
|
||||
|
@ -672,6 +674,8 @@ tmp = "tEsT".toUpperCase();
|
|||
ok(tmp === "TEST", "''.toUpperCase() = " + tmp);
|
||||
tmp = "tEsT".toUpperCase(3);
|
||||
ok(tmp === "TEST", "''.toUpperCase(3) = " + tmp);
|
||||
tmp = ("tE" + String.fromCharCode(0) + "sT").toUpperCase();
|
||||
ok(tmp === "TE" + String.fromCharCode(0) + "ST", "''.toUpperCase() = " + tmp);
|
||||
|
||||
tmp = "".anchor();
|
||||
ok(tmp === "<A NAME=\"undefined\"></A>", "''.anchor() = " + tmp);
|
||||
|
|
Loading…
Reference in New Issue