michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: var BUGNUMBER = 346801; michael@0: var summary = 'Hang regression from bug 346021'; michael@0: var actual = ''; michael@0: var expect = 'No Hang'; michael@0: michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: test(); michael@0: //----------------------------------------------------------------------------- michael@0: michael@0: function test() michael@0: { michael@0: enterFunc ('test'); michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (summary); michael@0: michael@0: try michael@0: { michael@0: var Class = { michael@0: create: function() { michael@0: return function() { michael@0: this.initialize.apply(this, arguments); michael@0: } michael@0: } michael@0: } michael@0: michael@0: Object.extend = function(destination, source) { michael@0: print("Start"); michael@0: // print(destination); michael@0: // print(source); michael@0: if(destination==source) michael@0: print("Same desination and source!"); michael@0: var i = 0; michael@0: for (property in source) { michael@0: // print(" " + property); michael@0: destination[property] = source[property]; michael@0: ++i; michael@0: if (i > 1000) { michael@0: throw "Hang"; michael@0: } michael@0: } michael@0: print("Finish"); michael@0: return destination; michael@0: } michael@0: michael@0: var Ajax = { michael@0: }; michael@0: michael@0: Ajax.Base = function() {}; michael@0: Ajax.Base.prototype = { michael@0: responseIsFailure: function() { } michael@0: } michael@0: michael@0: Ajax.Request = Class.create(); michael@0: michael@0: Ajax.Request.prototype = Object.extend(new Ajax.Base(), {}); michael@0: michael@0: Ajax.Updater = Class.create(); michael@0: michael@0: Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype); michael@0: actual = 'No Hang'; michael@0: } michael@0: catch(ex) michael@0: { michael@0: actual = ex + ''; michael@0: } michael@0: reportCompare(expect, actual, summary); michael@0: michael@0: exitFunc ('test'); michael@0: }