Properly handle floating point array indexes (453261, r=brendan).

This commit is contained in:
Andreas Gal
2008-09-15 15:00:40 -07:00
parent c491382ad6
commit f30af5f21a
4 changed files with 57 additions and 6 deletions

View File

@@ -449,7 +449,29 @@ js_Any_setprop(JSContext* cx, JSObject* obj, JSString* idstr, jsval v)
}
jsval FASTCALL
js_Any_getelem(JSContext* cx, JSObject* obj, jsuint index)
js_Any_getelem(JSContext* cx, JSObject* obj, jsdouble index)
{
jsval v;
jsid id;
if (!js_ValueToStringId(cx, DOUBLE_TO_JSVAL(&index), &id))
return JSVAL_ERROR_COOKIE;
if (!OBJ_GET_PROPERTY(cx, obj, id, &v))
return JSVAL_ERROR_COOKIE;
return v;
}
JSBool FASTCALL
js_Any_setelem(JSContext* cx, JSObject* obj, jsdouble index, jsval v)
{
jsid id;
if (!js_ValueToStringId(cx, DOUBLE_TO_JSVAL(&index), &id))
return JS_FALSE;
return OBJ_SET_PROPERTY(cx, obj, id, &v);
}
jsval FASTCALL
js_Any_getelem_int(JSContext* cx, JSObject* obj, jsuint index)
{
jsval v;
jsid id;
@@ -462,7 +484,7 @@ js_Any_getelem(JSContext* cx, JSObject* obj, jsuint index)
}
JSBool FASTCALL
js_Any_setelem(JSContext* cx, JSObject* obj, jsuint index, jsval v)
js_Any_setelem_int(JSContext* cx, JSObject* obj, jsuint index, jsval v)
{
jsid id;
if (!js_IndexToId(cx, index, &id))