diff --git a/mozilla/js/src/jsxml.c b/mozilla/js/src/jsxml.c index a45826dc8a5..39c8e934822 100644 --- a/mozilla/js/src/jsxml.c +++ b/mozilla/js/src/jsxml.c @@ -1762,7 +1762,7 @@ ParseNodeToXML(JSContext *cx, JSParseNode *pn, JSXMLArray *inScopeNSes, qn = NULL; if (pn->pn_type == TOK_XMLCOMMENT) { if (flags & XSF_IGNORE_COMMENTS) - return PN2X_SKIP_CHILD; + goto skip_child; xml_class = JSXML_CLASS_COMMENT; } else if (pn->pn_type == TOK_XMLPI) { if (IS_XML(str)) { @@ -1775,7 +1775,7 @@ ParseNodeToXML(JSContext *cx, JSParseNode *pn, JSXMLArray *inScopeNSes, } if (flags & XSF_IGNORE_PROCESSING_INSTRUCTIONS) - return PN2X_SKIP_CHILD; + goto skip_child; qn = ParseNodeToQName(cx, pn, inScopeNSes, JS_FALSE); if (!qn) @@ -1808,6 +1808,10 @@ ParseNodeToXML(JSContext *cx, JSParseNode *pn, JSXMLArray *inScopeNSes, return NULL; return xml; +skip_child: + js_LeaveLocalRootScope(cx); + return PN2X_SKIP_CHILD; + #undef PN2X_SKIP_CHILD syntax: