1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma_5/extensions/array-toString-recursion.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,46 @@ 1.4 +/* 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/licenses/publicdomain/ 1.7 + */ 1.8 + 1.9 +//----------------------------------------------------------------------------- 1.10 +var BUGNUMBER = 635389; 1.11 +var summary = 'Infinite recursion via [].{toString,toLocaleString,join}'; 1.12 + 1.13 +print(BUGNUMBER + ": " + summary); 1.14 + 1.15 +/************** 1.16 + * BEGIN TEST * 1.17 + **************/ 1.18 + 1.19 +try 1.20 +{ 1.21 + var x = []; 1.22 + x.join = Array.prototype.toString; 1.23 + "" + x; 1.24 + throw new Error("should have thrown"); 1.25 +} 1.26 +catch (e) 1.27 +{ 1.28 + assertEq(e instanceof InternalError, true, 1.29 + "should have thrown for over-recursion"); 1.30 +} 1.31 + 1.32 +try 1.33 +{ 1.34 + var x = { toString: Array.prototype.toString, join: Array.prototype.toString }; 1.35 + "" + x; 1.36 + throw new Error("should have thrown"); 1.37 +} 1.38 +catch (e) 1.39 +{ 1.40 + assertEq(e instanceof InternalError, true, 1.41 + "should have thrown for over-recursion"); 1.42 +} 1.43 + 1.44 +/******************************************************************************/ 1.45 + 1.46 +if (typeof reportCompare === "function") 1.47 + reportCompare(true, true); 1.48 + 1.49 +print("All tests passed!");