diff -r 000000000000 -r 6474c204b198 js/src/tests/js1_5/extensions/regress-291213.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/tests/js1_5/extensions/regress-291213.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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);