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: * michael@0: * Date: 14 Jan 2002 michael@0: * SUMMARY: Shouldn't crash on regexps with many nested parentheses michael@0: * See http://bugzilla.mozilla.org/show_bug.cgi?id=119909 michael@0: * michael@0: */ michael@0: //----------------------------------------------------------------------------- michael@0: var BUGNUMBER = 119909; michael@0: var summary = "Shouldn't crash on regexps with many nested parentheses"; michael@0: var NO_BACKREFS = false; michael@0: var DO_BACKREFS = true; michael@0: michael@0: michael@0: //-------------------------------------------------- michael@0: test(); michael@0: //-------------------------------------------------- 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: testThis(500, NO_BACKREFS, 'hello', 'goodbye'); michael@0: testThis(500, DO_BACKREFS, 'hello', 'goodbye'); michael@0: michael@0: reportCompare('No Crash', 'No Crash', ''); michael@0: michael@0: exitFunc('test'); michael@0: } michael@0: michael@0: michael@0: /* michael@0: * Creates a regexp pattern like (((((((((hello))))))))) michael@0: * and tests str.search(), str.match(), str.replace() michael@0: */ michael@0: function testThis(numParens, doBackRefs, strOriginal, strReplace) michael@0: { michael@0: var openParen = doBackRefs? '(' : '(?:'; michael@0: var closeParen = ')'; michael@0: var pattern = ''; michael@0: michael@0: for (var i=0; i