mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 483103 - Better fixes for getting the lengths of strings and String objects. r=brendan
This commit is contained in:
parent
2018b20826
commit
bb500538a7
@ -607,21 +607,7 @@ str_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags,
|
||||
JSString *str, *str1;
|
||||
jsint slot;
|
||||
|
||||
if (flags & JSRESOLVE_ASSIGNING)
|
||||
return JS_TRUE;
|
||||
|
||||
if (id == ATOM_KEY(cx->runtime->atomState.lengthAtom)) {
|
||||
v = OBJ_GET_SLOT(cx, obj, JSSLOT_PRIVATE);
|
||||
str = JSVAL_TO_STRING(v);
|
||||
if (!OBJ_DEFINE_PROPERTY(cx, obj, id, INT_TO_JSVAL(17), NULL, NULL,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, NULL)) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
*objp = obj;
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
if (!JSVAL_IS_INT(id))
|
||||
if (!JSVAL_IS_INT(id) || (flags & JSRESOLVE_ASSIGNING))
|
||||
return JS_TRUE;
|
||||
|
||||
v = OBJ_GET_SLOT(cx, obj, JSSLOT_PRIVATE);
|
||||
@ -2861,6 +2847,13 @@ js_InitStringClass(JSContext *cx, JSObject *obj)
|
||||
return NULL;
|
||||
STOBJ_SET_SLOT(proto, JSSLOT_PRIVATE,
|
||||
STRING_TO_JSVAL(cx->runtime->emptyString));
|
||||
if (!js_DefineNativeProperty(cx, proto, ATOM_TO_JSID(cx->runtime->atomState.lengthAtom),
|
||||
JSVAL_VOID, NULL, NULL,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, 0, 0,
|
||||
NULL)) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
return proto;
|
||||
}
|
||||
|
||||
|
@ -4559,6 +4559,9 @@ function testLengthInString()
|
||||
var res = "length" in s;
|
||||
for (var i = 0; i < 5; i++)
|
||||
res = res && ("length" in s);
|
||||
res = res && s.hasOwnProperty("length");
|
||||
for (var i = 0; i < 5; i++)
|
||||
res = res && s.hasOwnProperty("length");
|
||||
return res;
|
||||
}
|
||||
testLengthInString.expected = true;
|
||||
|
Loading…
Reference in New Issue
Block a user