summaryrefslogtreecommitdiffstats
path: root/js/src/tests/js1_5/extensions/regress-291213.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/js1_5/extensions/regress-291213.js')
-rw-r--r--js/src/tests/js1_5/extensions/regress-291213.js48
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);