| /* -*- 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); |