зеркало из https://github.com/mozilla/gecko-dev.git
Allow for nested filtering expressions in flag-setting and restoring (352605, r=jwalden).
This commit is contained in:
Родитель
5f0d68e853
Коммит
b7df3a74ce
|
@ -7962,9 +7962,9 @@ js_FilterXMLList(JSContext *cx, JSObject *obj, jsbytecode *pc, jsval *vp)
|
||||||
{
|
{
|
||||||
JSBool ok, match;
|
JSBool ok, match;
|
||||||
JSStackFrame *fp;
|
JSStackFrame *fp;
|
||||||
|
uint32 flags, i, n;
|
||||||
JSObject *scobj, *listobj, *resobj, *withobj, *kidobj;
|
JSObject *scobj, *listobj, *resobj, *withobj, *kidobj;
|
||||||
JSXML *xml, *list, *result, *kid;
|
JSXML *xml, *list, *result, *kid;
|
||||||
uint32 i, n;
|
|
||||||
|
|
||||||
ok = js_EnterLocalRootScope(cx);
|
ok = js_EnterLocalRootScope(cx);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
|
@ -7973,7 +7973,8 @@ js_FilterXMLList(JSContext *cx, JSObject *obj, jsbytecode *pc, jsval *vp)
|
||||||
/* All control flow after this point must exit via label out or bad. */
|
/* All control flow after this point must exit via label out or bad. */
|
||||||
*vp = JSVAL_NULL;
|
*vp = JSVAL_NULL;
|
||||||
fp = cx->fp;
|
fp = cx->fp;
|
||||||
fp->flags |= JSFRAME_FILTERING;
|
flags = fp->flags;
|
||||||
|
fp->flags = flags | JSFRAME_FILTERING;
|
||||||
scobj = js_GetScopeChain(cx, fp);
|
scobj = js_GetScopeChain(cx, fp);
|
||||||
withobj = NULL;
|
withobj = NULL;
|
||||||
if (!scobj)
|
if (!scobj)
|
||||||
|
@ -8024,7 +8025,7 @@ js_FilterXMLList(JSContext *cx, JSObject *obj, jsbytecode *pc, jsval *vp)
|
||||||
*vp = OBJECT_TO_JSVAL(resobj);
|
*vp = OBJECT_TO_JSVAL(resobj);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
fp->flags &= ~JSFRAME_FILTERING;
|
fp->flags = flags;
|
||||||
if (withobj) {
|
if (withobj) {
|
||||||
fp->scopeChain = scobj;
|
fp->scopeChain = scobj;
|
||||||
JS_SetPrivate(cx, withobj, NULL);
|
JS_SetPrivate(cx, withobj, NULL);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче