array-toString-recursion.js (1036B)
1 /* 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/licenses/publicdomain/ 4 */ 5 6 //----------------------------------------------------------------------------- 7 var BUGNUMBER = 635389; 8 var summary = 'Infinite recursion via [].{toString,toLocaleString,join}'; 9 10 print(BUGNUMBER + ": " + summary); 11 12 /************** 13 * BEGIN TEST * 14 **************/ 15 16 try 17 { 18 var x = []; 19 x.join = Array.prototype.toString; 20 "" + x; 21 throw new Error("should have thrown"); 22 } 23 catch (e) 24 { 25 assertEq(e instanceof InternalError, true, 26 "should have thrown for over-recursion"); 27 } 28 29 try 30 { 31 var x = { toString: Array.prototype.toString, join: Array.prototype.toString }; 32 "" + x; 33 throw new Error("should have thrown"); 34 } 35 catch (e) 36 { 37 assertEq(e instanceof InternalError, true, 38 "should have thrown for over-recursion"); 39 } 40 41 /******************************************************************************/ 42 43 if (typeof reportCompare === "function") 44 reportCompare(true, true); 45 46 print("All tests passed!");