18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* ***** BEGIN LICENSE BLOCK ***** 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version: NPL 1.1/GPL 2.0/LGPL 2.1 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The contents of this file are subject to the Netscape Public License 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version 1.1 (the "License"); you may not use this file except in 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* compliance with the License. You may obtain a copy of the License at 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* http://www.mozilla.org/NPL/ 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Software distributed under the License is distributed on an "AS IS" basis, 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* for the specific language governing rights and limitations under the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* License. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Original Code is JavaScript Engine testing utilities. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Initial Developer of the Original Code is Netscape Communications Corp. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Portions created by the Initial Developer are Copyright (C) 2001 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the Initial Developer. All Rights Reserved. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Contributor(s): pschwartau@netscape.com, Liorean@user.bip.net 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Alternatively, the contents of this file may be used under the terms of 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* either the GNU General Public License Version 2 or later (the "GPL"), or 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* in which case the provisions of the GPL or the LGPL are applicable instead 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* of those above. If you wish to allow use of your version of this file only 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* under the terms of either the GPL or the LGPL, and not to allow others to 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* use your version of this file under the terms of the NPL, indicate your 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* decision by deleting the provisions above and replace them with the notice 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and other provisions required by the GPL or the LGPL. If you do not delete 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the provisions above, a recipient may use your version of this file under 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the terms of any one of the NPL, the GPL or the LGPL. 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* ***** END LICENSE BLOCK ***** 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 30 October 2001 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: Regression test for bug 108440 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See http://bugzilla.mozilla.org/show_bug.cgi?id=108440 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* We shouldn't crash trying to add an array as an element of itself (!) 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Brendan: "...it appears that Array.prototype.toString is unsafe, 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and what's more, ECMA-262 Edition 3 has no helpful words about 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* avoiding recursive death on a cycle." 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//----------------------------------------------------------------------------- 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = 108440; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = "Shouldn't crash trying to add an array as an element of itself"; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar self = this; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar temp = ''; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintBugNumber(bug); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintStatus(summary); 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Explicit test: 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar a=[]; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttemp = (a[a.length]=a); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Implicit test (one of the properties of |self| is |a|) 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[]; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor(var prop in self) 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project temp = prop; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project temp = (a[a.length] = self[prop]); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Stressful explicit test 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[]; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor (var i=0; i<10; i++) 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a[a.length] = a; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Test toString() 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[]; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor (var i=0; i<10; i++) 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a[a.length] = a.toString(); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Test toSource() - but Rhino doesn't have this, so try...catch it 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[]; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttry 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (var i=0; i<10; i++) 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a[a.length] = a.toSource(); 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectcatch(e) 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 104