/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* Date: 04 October 2001
*
* SUMMARY: Arose from Bugzilla bug 103087:
* "The RegExp MarkupSPE in demo crashes Mozilla"
*
* See http://bugzilla.mozilla.org/show_bug.cgi?id=103087
* The SpiderMonkey shell crashed on some of these regexps.
*
* The reported crash was on i=24 below ('MarkupSPE' regexp)
* I crashed on that, and also on i=43 ('XML_SPE' regexp)
*/
//-----------------------------------------------------------------------------
var UBound = 0;
var BUGNUMBER = 103087;
var summary =
"Testing that we don't crash on any of these regexps -";
var re =
'';
var lm =
'';
var lc =
'';
var rc =
'';
// the regexps are built in pieces -
var NameStrt =
"[A-Za-z_:]|[^\\x00-\\x7F]";
var NameChar =
"[A-Za-z0-9_:.-]|[^\\x00-\\x7F]";
var Name =
"(" + NameStrt +
")(" + NameChar +
")*";
var TextSE =
"[^<]+";
var UntilHyphen =
"[^-]*-";
var Until2Hyphens = UntilHyphen +
"([^-]" + UntilHyphen +
")*-";
var CommentCE = Until2Hyphens +
">?";
var UntilRSBs =
"[^]]*]([^]]+])*]+";
var CDATA_CE = UntilRSBs +
"([^]>]" + UntilRSBs +
")*>";
var S =
"[ \\n\\t\\r]+";
var QuoteSE =
'"[^"]' +
"*" +
'"' +
"|'[^']*'";
var DT_IdentSE = S + Name +
"(" + S +
"(" + Name +
"|" + QuoteSE +
"))*";
var MarkupDeclCE =
"([^]\"'><]+|" + QuoteSE + ")*>";
var S1 =
"[\\n\\r\\t ]";
var UntilQMs =
"[^?]*\\?+";
var PI_Tail =
"\\?>|" + S1 + UntilQMs +
"([^>?]" + UntilQMs +
")*>";
var DT_ItemSE =
"<(!(--" + Until2Hyphens +
">|[^-]" + MarkupDeclCE +
")|\\?" + Name +
"(" + PI_Tail +
"))|%" + Name +
";|" + S;
var DocTypeCE = DT_IdentSE +
"(" + S +
")?(\\[(" + DT_ItemSE +
")*](" + S +
")?)?>?";
var DeclCE =
"--(" + CommentCE +
")?|\\[CDATA\\[(" + CDATA_CE +
")?|DOCTYPE(" + DocTypeCE +
")?";
var PI_CE = Name +
"(" + PI_Tail +
")?";
var EndTagCE = Name +
"(" + S +
")?>?";
var AttValSE =
'"[^<"]' +
"*" +
'"' +
"|'[^<']*'";
var ElemTagCE = Name +
"(" + S + Name +
"(" + S +
")?=(" + S +
")?(" + AttValSE +
"))*(" + S +
")?/?>?";
var MarkupSPE =
"<(!(" + DeclCE +
")?|\\?(" + PI_CE +
")?|/(" + EndTagCE +
")?|(" + ElemTagCE +
")?)";
var XML_SPE = TextSE +
"|" + MarkupSPE;
var CommentRE =
"