diff --git a/js/src/jsops.cpp b/js/src/jsops.cpp index 4ea1dcd45b74..9dedc21dcd3a 100644 --- a/js/src/jsops.cpp +++ b/js/src/jsops.cpp @@ -2751,7 +2751,7 @@ BEGIN_CASE(JSOP_CALLGVAR) rval = obj->getSlotMT(cx, slot); PUSH_OPND(rval); if (op == JSOP_CALLGVAR) - PUSH_OPND(OBJECT_TO_JSVAL(obj)); + PUSH_OPND(JSVAL_NULL); END_CASE(JSOP_GETGVAR) BEGIN_CASE(JSOP_SETGVAR) diff --git a/js/src/tests/js1_8_5/regress/jstests.list b/js/src/tests/js1_8_5/regress/jstests.list index 23101dbe24cc..0f28b6f0c01c 100644 --- a/js/src/tests/js1_8_5/regress/jstests.list +++ b/js/src/tests/js1_8_5/regress/jstests.list @@ -8,3 +8,5 @@ script regress-541255-3.js script regress-541255-4.js script regress-541455.js script regress-546615.js +script regress-555246-0.js +fails script regress-555246-1.js diff --git a/js/src/tests/js1_8_5/regress/regress-555246-0.js b/js/src/tests/js1_8_5/regress/regress-555246-0.js new file mode 100644 index 000000000000..86acca0334ea --- /dev/null +++ b/js/src/tests/js1_8_5/regress/regress-555246-0.js @@ -0,0 +1,11 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + * Contributor: Jason Orendorff + */ + +var cx = evalcx(""); +evalcx("function f() { return this; }", cx); +var f = cx.f; +assertEq(f(), cx); +reportCompare(0, 0, ""); diff --git a/js/src/tests/js1_8_5/regress/regress-555246-1.js b/js/src/tests/js1_8_5/regress/regress-555246-1.js new file mode 100644 index 000000000000..6bd0195d833b --- /dev/null +++ b/js/src/tests/js1_8_5/regress/regress-555246-1.js @@ -0,0 +1,11 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + * Contributor: Jason Orendorff + */ + +var cx = evalcx(""); +evalcx("function f() { return this; }", cx); +f = cx.f; +assertEq(f(), cx); +reportCompare(0, 0, "");