Bug 650618 - Make sure XML objects get a (rooted-at-global) parent (r=waldo)

This commit is contained in:
Luke Wagner 2011-07-15 13:56:12 -07:00
parent 3f0584db78
commit 0a7f974fb5
2 changed files with 9 additions and 3 deletions

View File

@ -0,0 +1,3 @@
// |jit-test| error:TypeError
print(evalcx("#1=@o"))

View File

@ -508,7 +508,8 @@ NewXMLAttributeName(JSContext *cx, JSLinearString *uri, JSLinearString *prefix,
* AttributeName is an internal anonymous class which instances are not
* exposed to scripts.
*/
JSObject *obj = NewNonFunction<WithProto::Given>(cx, &js_AttributeNameClass, NULL, NULL);
JSObject *parent = GetGlobalForScopeChain(cx);
JSObject *obj = NewNonFunction<WithProto::Given>(cx, &js_AttributeNameClass, NULL, parent);
if (!obj)
return NULL;
JS_ASSERT(obj->isQName());
@ -7072,7 +7073,8 @@ NewXMLObject(JSContext *cx, JSXML *xml)
{
JSObject *obj;
obj = NewNonFunction<WithProto::Class>(cx, &js_XMLClass, NULL, NULL);
JSObject *parent = GetGlobalForScopeChain(cx);
obj = NewNonFunction<WithProto::Class>(cx, &js_XMLClass, NULL, parent);
if (!obj)
return NULL;
obj->setPrivate(xml);
@ -7616,7 +7618,8 @@ js_StepXMLListFilter(JSContext *cx, JSBool initialized)
return JS_FALSE;
}
filterobj = NewNonFunction<WithProto::Given>(cx, &js_XMLFilterClass, NULL, NULL);
JSObject *parent = GetGlobalForScopeChain(cx);
filterobj = NewNonFunction<WithProto::Given>(cx, &js_XMLFilterClass, NULL, parent);
if (!filterobj)
return JS_FALSE;