diff options
Diffstat (limited to 'js/src/tests/js1_5/extensions/regress-291213.js')
-rw-r--r-- | js/src/tests/js1_5/extensions/regress-291213.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/src/tests/js1_5/extensions/regress-291213.js b/js/src/tests/js1_5/extensions/regress-291213.js new file mode 100644 index 000000000..d3c61a042 --- /dev/null +++ b/js/src/tests/js1_5/extensions/regress-291213.js @@ -0,0 +1,48 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 291213; +var summary = 'Do not crash in args_resolve enumerating |arguments|'; +var actual = 'No Crash'; +var expect = 'No Crash'; + +var scriptCode = "var result = \"\" + arguments; " + + "for (i in arguments) " + + "result += \"\\\n \" + i + \" \" + arguments[i]; result;"; +var scripts = {}; + +if (typeof Script == 'undefined') +{ + print('Test skipped. Script not defined.'); +} +else +{ + scripts["A"] = new Script(scriptCode); + + scripts["B"] = (function() { + return new Script(scriptCode); + })(); + + scripts["C"] = (function() { + function x() { "a"; } + return new Script(scriptCode); + })(); + +// any Object (window, document, new Array(), ...) + var anyObj = new Object(); + scripts["D"] = (function() { + function x() { anyObj; } + return new Script(scriptCode); + })(); + + var result; + for (var i in scripts) { + try { result = scripts[i].exec(); } + catch (e) { result = e; } + printStatus(i + ") " + result); + } +} +reportCompare(expect, actual, summary); |