From b6bc18350bb91e2a03025e21cfb0c4f16278dae1 Mon Sep 17 00:00:00 2001 From: Andreas Gal Date: Mon, 11 Aug 2008 16:12:52 -0700 Subject: [PATCH] Support non-flat strings in Any_getelem and Any_setelem. --- js/src/Makefile.in | 2 +- js/src/jsbuiltins.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/js/src/Makefile.in b/js/src/Makefile.in index cf63e860852..8271b1a2ceb 100644 --- a/js/src/Makefile.in +++ b/js/src/Makefile.in @@ -222,7 +222,7 @@ CPPSRCS += \ ifdef DEBUG EXPORTS += nanojit/TraceTreeDrawer.h -CPPSRCS += nanojit/TraceTreeDrawer.cpp nanojit/Tests.cpp +CPPSRCS += nanojit/TraceTreeDrawer.cpp endif DEFINES += -DFEATURE_NANOJIT -DJS_TRACER diff --git a/js/src/jsbuiltins.cpp b/js/src/jsbuiltins.cpp index f24d08ba33a..30b6c460cbb 100644 --- a/js/src/jsbuiltins.cpp +++ b/js/src/jsbuiltins.cpp @@ -302,6 +302,8 @@ jsval FASTCALL js_Any_getelem(JSContext* cx, JSObject* obj, JSString* idstr) { jsval v; + if (!JSSTRING_IS_FLAT(idstr) && !js_UndependString(cx, idstr)) + return JSVAL_ERROR_COOKIE; if (!OBJ_GET_PROPERTY(cx, obj, ATOM_TO_JSID(STRING_TO_JSVAL(idstr)), &v)) return JSVAL_ERROR_COOKIE; return v; @@ -310,6 +312,8 @@ js_Any_getelem(JSContext* cx, JSObject* obj, JSString* idstr) bool FASTCALL js_Any_setelem(JSContext* cx, JSObject* obj, JSString* idstr, jsval v) { + if (!JSSTRING_IS_FLAT(idstr) && !js_UndependString(cx, idstr)) + return false; return OBJ_SET_PROPERTY(cx, obj, ATOM_TO_JSID(STRING_TO_JSVAL(idstr)), &v); }