WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Change pcre_compile to take the pattern's length and work with patterns containing null characters
11849_pcre_r6.patch (text/plain), 114.50 KB, created by
mitz
on 2006-12-29 08:37:22 PST
(
hide
)
Description:
Change pcre_compile to take the pattern's length and work with patterns containing null characters
Filename:
MIME Type:
Creator:
mitz
Created:
2006-12-29 08:37:22 PST
Size:
114.50 KB
patch
obsolete
>Index: JavaScriptCore/ChangeLog >=================================================================== >--- JavaScriptCore/ChangeLog (revision 18474) >+++ JavaScriptCore/ChangeLog (working copy) >@@ -1,3 +1,34 @@ >+2006-12-29 Mitz Pettel <mitz@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ - fix http://bugs.webkit.org/show_bug.cgi?id=11849 >+ REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly) >+ >+ Modified pcre_compile() (and the functions that it calls) to work with patterns >+ containing null characters. >+ >+ Covered by JavaScriptCore tests ecma_3/RegExp/octal-002.js and ecma_3/RegExp/regress-85721.js >+ >+ * kjs/regexp.cpp: >+ (KJS::RegExp::RegExp): Changed to not null-terminate the pattern string and instead >+ pass its length to pcre_compile. >+ * pcre/pcre.h: >+ * pcre/pcre_compile.c: >+ (check_escape): >+ (get_ucp): >+ (is_counted_repeat): >+ (check_posix_syntax): >+ (compile_branch): >+ (compile_regex): >+ (pcre_compile): Added a parameter specifying the length of the pattern, which >+ is no longer required to be null-terminated and may contain null characters. >+ (pcre_compile2): >+ * pcre/pcre_internal.h: >+ * tests/mozilla/expected.html: Updated for the two tests that this patch >+ fixes. Also updated failing results for ecma_3/RegExp/regress-100199.js >+ which were not updated after bug 6257 was fixed. >+ > 2006-12-28 George Staikos <staikos@kde.org> > > Reviewed by Olliej. >Index: JavaScriptCore/kjs/regexp.cpp >=================================================================== >--- JavaScriptCore/kjs/regexp.cpp (revision 18457) >+++ JavaScriptCore/kjs/regexp.cpp (working copy) >@@ -47,15 +47,12 @@ RegExp::RegExp(const UString &p, int fla > const char *errorMessage; > int errorOffset; > >- UString pattern(p); >- >- pattern.append('\0'); >- m_regex = pcre_compile(reinterpret_cast<const uint16_t*>(pattern.data()), >+ m_regex = pcre_compile(reinterpret_cast<const uint16_t*>(p.data()), p.size(), > options, &errorMessage, &errorOffset, NULL); > if (!m_regex) { > // Try again, this time handle any \u we might find. >- UString uPattern = sanitizePattern(pattern); >- m_regex = pcre_compile(reinterpret_cast<const uint16_t*>(uPattern.data()), >+ UString uPattern = sanitizePattern(p); >+ m_regex = pcre_compile(reinterpret_cast<const uint16_t*>(uPattern.data()), uPattern.size(), > options, &errorMessage, &errorOffset, NULL); > if (!m_regex) { > m_constructionError = strdup(errorMessage); >Index: JavaScriptCore/pcre/pcre.h >=================================================================== >--- JavaScriptCore/pcre/pcre.h (revision 18457) >+++ JavaScriptCore/pcre/pcre.h (working copy) >@@ -237,9 +237,9 @@ PCRE_DATA_SCOPE int pcre_callout(pcre_ > > /* Exported PCRE functions */ > >-PCRE_DATA_SCOPE pcre *pcre_compile(const pcre_char *, int, const char **, int *, >+PCRE_DATA_SCOPE pcre *pcre_compile(const pcre_char *, int, int, const char **, int *, > const unsigned char *); >-PCRE_DATA_SCOPE pcre *pcre_compile2(const pcre_char *, int, int *, const char **, >+PCRE_DATA_SCOPE pcre *pcre_compile2(const pcre_char *, int, int, int *, const char **, > int *, const unsigned char *); > PCRE_DATA_SCOPE int pcre_config(int, void *); > PCRE_DATA_SCOPE int pcre_copy_named_substring(const pcre *, const pcre_char *, >Index: JavaScriptCore/pcre/pcre_compile.c >=================================================================== >--- JavaScriptCore/pcre/pcre_compile.c (revision 18457) >+++ JavaScriptCore/pcre/pcre_compile.c (working copy) >@@ -346,7 +346,7 @@ static const unsigned char ebcdic_charta > /* Definition to allow mutual recursion */ > > static BOOL >- compile_regex(int, int, int *, uschar **, const pcre_uchar **, int *, BOOL, int, >+ compile_regex(int, int, int *, uschar **, const pcre_uchar **, const pcre_uchar const*, int *, BOOL, int, > int *, int *, branch_chain *, compile_data *); > > >@@ -374,7 +374,7 @@ Returns: zero or positive => a d > */ > > static int >-check_escape(const pcre_uchar **ptrptr, int *errorcodeptr, int bracount, >+check_escape(const pcre_uchar **ptrptr, const pcre_uchar const* patternEnd, int *errorcodeptr, int bracount, > int options, BOOL isclass) > { > const pcre_uchar *ptr = *ptrptr; >@@ -382,19 +382,24 @@ int c, i; > > /* If backslash is at the end of the pattern, it's an error. */ > >-c = *(++ptr); >-if (c == 0) *errorcodeptr = ERR1; >+if (++ptr == patternEnd) { >+ *errorcodeptr = ERR1; >+ *ptrptr = ptr; >+ return 0; >+} >+ >+c = *ptr; > > /* Non-alphamerics are literals. For digits or letters, do an initial lookup in > a table. A non-zero result is something that can be returned immediately. > Otherwise further processing may be required. */ > > #if !EBCDIC /* ASCII coding */ >-else if (c < '0' || c > 'z') {} /* Not alphameric */ >+if (c < '0' || c > 'z') {} /* Not alphameric */ > else if ((i = escapes[c - '0']) != 0) c = i; > > #else /* EBCDIC coding */ >-else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {} /* Not alphameric */ >+if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {} /* Not alphameric */ > else if ((i = escapes[c - 0x48]) != 0) c = i; > #endif > >@@ -435,7 +440,7 @@ else > { > oldptr = ptr; > c -= '0'; >- while ((DIGITAB(ptr[1]) & ctype_digit) != 0) >+ while (ptr + 1 < patternEnd && (DIGITAB(ptr[1]) & ctype_digit) != 0) > c = c * 10 + *(++ptr) - '0'; > if (c < 10 || c <= bracount) > { >@@ -461,7 +466,7 @@ else > > case '0': > c -= '0'; >- while(i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7') >+ while (i++ < 2 && ptr + 1 < patternEnd && ptr[1] >= '0' && ptr[1] <= '7') > c = c * 8 + *(++ptr) - '0'; > c &= 255; /* Take least significant 8 bits */ > break; >@@ -471,12 +476,12 @@ else > > case 'x': > #ifdef SUPPORT_UTF8 >- if (ptr[1] == '{' && (options & PCRE_UTF8) != 0) >+ if (ptr + 1 < patternEnd && ptr[1] == '{' && (options & PCRE_UTF8) != 0) > { > const pcre_uchar *pt = ptr + 2; > register int count = 0; > c = 0; >- while ((DIGITAB(*pt) & ctype_xdigit) != 0) >+ while (pt < patternEnd && (DIGITAB(*pt) & ctype_xdigit) != 0) > { > int cc = *pt++; > count++; >@@ -488,7 +493,7 @@ else > c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10)); > #endif > } >- if (*pt == '}') >+ if (pt < patternEnd && *pt == '}') > { > if (c < 0 || count > 8 || (c >= 0xd800 && c <= 0xdbff) || (c >= 0xfdd0 && c <= 0xfdef) || c == 0xfffe || c == 0xffff || c > 0x10FFFF) *errorcodeptr = ERR34; > ptr = pt; >@@ -502,7 +507,7 @@ else > /* Read just a single hex char */ > > c = 0; >- while (i++ < 2 && (DIGITAB(ptr[1]) & ctype_xdigit) != 0) >+ while (i++ < 2 && ptr + 1 < patternEnd && (DIGITAB(ptr[1]) & ctype_xdigit) != 0) > { > int cc; /* Some compilers don't like ++ */ > cc = *(++ptr); /* in initializers */ >@@ -519,12 +524,12 @@ else > /* Other special escapes not starting with a digit are straightforward */ > > case 'c': >- c = *(++ptr); >- if (c == 0) >+ if (++ptr == patternEnd) > { > *errorcodeptr = ERR2; > return 0; > } >+ c = *ptr; > > /* A letter is upper-cased; then the 0x40 bit is flipped. This coding > is ASCII-specific, but then the whole concept of \cx is ASCII-specific. >@@ -581,14 +586,14 @@ Returns: value from ucp_type_table, > */ > > static int >-get_ucp(const pcre_uchar **ptrptr, BOOL *negptr, int *errorcodeptr) >+get_ucp(const pcre_uchar **ptrptr, const pcre_uchar const* patternEnd, BOOL *negptr, int *errorcodeptr) > { > int c, i, bot, top; > const pcre_uchar *ptr = *ptrptr; > char name[4]; > >-c = *(++ptr); >-if (c == 0) goto ERROR_RETURN; >+if (++ptr == patternEnd) goto ERROR_RETURN; >+c = *ptr; > > *negptr = FALSE; > >@@ -597,22 +602,23 @@ preceded by ^ for negation. */ > > if (c == '{') > { >- if (ptr[1] == '^') >+ if (ptr + 1 < patternEnd && ptr[1] == '^') > { > *negptr = TRUE; > ptr++; > } > for (i = 0; i <= 2; i++) > { >- c = *(++ptr); >- if (c == 0) goto ERROR_RETURN; >+ if (++ptr == patternEnd) goto ERROR_RETURN; >+ c = *ptr; > if (c == '}') break; > if (c > 127) goto ERROR_RETURN; > name[i] = c; > } > if (c !='}') /* Try to distinguish error cases */ > { >- while (*(++ptr) != 0 && *ptr != '}'); >+ while (++ptr < patternEnd && *ptr != '}') >+ ; > if (*ptr == '}') goto UNKNOWN_RETURN; else goto ERROR_RETURN; > } > name[i] = 0; >@@ -673,21 +679,28 @@ Returns: TRUE or FALSE > */ > > static BOOL >-is_counted_repeat(const pcre_uchar *p) >+is_counted_repeat(const pcre_uchar *p, const pcre_uchar const* patternEnd) > { >-if ((DIGITAB(*p) & ctype_digit) == 0) return FALSE; >+if (p >= patternEnd || (DIGITAB(*p) & ctype_digit) == 0) >+ return FALSE; > p++; >-while ((DIGITAB(*p) & ctype_digit) != 0) p++; >-if (*p == '}') return TRUE; >+while (p < patternEnd && (DIGITAB(*p) & ctype_digit) != 0) >+ p++; >+if (p < patternEnd && *p == '}') >+ return TRUE; > >-if (*p++ != ',') return FALSE; >-if (*p == '}') return TRUE; >+if (p >= patternEnd || *p++ != ',') >+ return FALSE; >+if (p < patternEnd && *p == '}') >+ return TRUE; > >-if ((DIGITAB(*p) & ctype_digit) == 0) return FALSE; >+if (p >= patternEnd || (DIGITAB(*p) & ctype_digit) == 0) >+ return FALSE; > p++; >-while ((DIGITAB(*p) & ctype_digit) != 0) p++; >+while (p < patternEnd && (DIGITAB(*p) & ctype_digit) != 0) >+ p++; > >-return (*p == '}'); >+return (p < patternEnd && *p == '}'); > } > > >@@ -1344,13 +1357,14 @@ Returns: TRUE or FALSE > */ > > static BOOL >-check_posix_syntax(const pcre_uchar *ptr, const pcre_uchar **endptr, compile_data *cd) >+check_posix_syntax(const pcre_uchar *ptr, const pcre_uchar const *patternEnd, const pcre_uchar **endptr, compile_data *cd) > { > int terminator; /* Don't combine these lines; the Solaris cc */ > terminator = *(++ptr); /* compiler warns about "non-constant" initializer. */ > if (*(++ptr) == '^') ptr++; >-while ((CTYPES(cd, *ptr) & ctype_letter) != 0) ptr++; >-if (*ptr == terminator && ptr[1] == ']') >+while (ptr < patternEnd && (CTYPES(cd, *ptr) & ctype_letter) != 0) >+ ptr++; >+if (ptr + 1 < patternEnd && *ptr == terminator && ptr[1] == ']') > { > *endptr = ptr; > return TRUE; >@@ -1570,7 +1584,7 @@ Returns: TRUE on success > > static BOOL > compile_branch(int *optionsptr, int *brackets, uschar **codeptr, >- const pcre_uchar **ptrptr, int *errorcodeptr, int *firstbyteptr, >+ const pcre_uchar **ptrptr, const pcre_uchar const* patternEnd, int *errorcodeptr, int *firstbyteptr, > int *reqbyteptr, branch_chain *bcptr, compile_data *cd) > { > int repeat_type, op_type; >@@ -1646,13 +1660,13 @@ for (;; ptr++) > > /* Next byte in the pattern */ > >- c = *ptr; >+ c = ptr < patternEnd ? *ptr : 0; > > /* If in \Q...\E, check for the end; if not, we have a literal */ > >- if (inescq && c != 0) >+ if (inescq && ptr < patternEnd) > { >- if (c == '\\' && ptr[1] == 'E') >+ if (c == '\\' && ptr + 1 < patternEnd && ptr[1] == 'E') > { > inescq = FALSE; > ptr++; >@@ -1678,7 +1692,7 @@ for (;; ptr++) > a quantifier. */ > > is_quantifier = c == '*' || c == '+' || c == '?' || >- (c == '{' && is_counted_repeat(ptr+1)); >+ (c == '{' && is_counted_repeat(ptr+1, patternEnd)); > > if (!is_quantifier && previous_callout != NULL && > after_manual_callout-- <= 0) >@@ -1696,8 +1710,11 @@ for (;; ptr++) > { > /* The space before the ; is to avoid a warning on a silly compiler > on the Macintosh. */ >- while ((c = *(++ptr)) != 0 && c != NEWLINE) ; >- if (c != 0) continue; /* Else fall through to handle end of string */ >+ while (++ptr < patternEnd && (c = *ptr) != NEWLINE) >+ ; >+ if (ptr < patternEnd) >+ continue; /* Else fall through to handle end of string */ >+ c = 0; > } > } > >@@ -1714,6 +1731,9 @@ for (;; ptr++) > /* The branch terminates at end of string, |, or ). */ > > case 0: >+ if (ptr < patternEnd) >+ goto NORMAL_CHAR; >+ // End of string; fall through > case '|': > case ')': > *firstbyteptr = firstbyte; >@@ -1769,7 +1789,7 @@ for (;; ptr++) > they are encountered at the top level, so we'll do that too. */ > > if ((ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') && >- check_posix_syntax(ptr, &tempptr, cd)) >+ check_posix_syntax(ptr, patternEnd, &tempptr, cd)) > { > *errorcodeptr = (ptr[1] == ':')? ERR13 : ERR31; > goto FAILED; >@@ -1842,7 +1862,7 @@ for (;; ptr++) > > if (c == '[' && > (ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') && >- check_posix_syntax(ptr, &tempptr, cd)) >+ check_posix_syntax(ptr, patternEnd, &tempptr, cd)) > { > BOOL local_negate = FALSE; > int posix_class, i, namelen; >@@ -1884,7 +1904,7 @@ for (;; ptr++) > posix_class *= 3; > for (i = 0; i < 3; i++) > { >- BOOL blankclass = STREQUAL(ptr, 5, "blank"); >+ BOOL blankclass = ptr + 5 <= patternEnd && STREQUAL(ptr, 5, "blank"); > int taboffset = posix_class_maps[posix_class + i]; > if (taboffset < 0) break; > if (local_negate) >@@ -1917,13 +1937,13 @@ for (;; ptr++) > > if (c == '\\') > { >- c = check_escape(&ptr, errorcodeptr, *brackets, options, TRUE); >+ c = check_escape(&ptr, patternEnd, errorcodeptr, *brackets, options, TRUE); > > if (-c == ESC_b) c = '\b'; /* \b is backslash in a class */ > else if (-c == ESC_X) c = 'X'; /* \X is literal X in a class */ > else if (-c == ESC_Q) /* Handle start of quoted string */ > { >- if (ptr[1] == '\\' && ptr[2] == 'E') >+ if (ptr + 2 < patternEnd && ptr[1] == '\\' && ptr[2] == 'E') > { > ptr += 2; /* avoid empty string */ > } >@@ -1970,7 +1990,7 @@ for (;; ptr++) > case ESC_P: > { > BOOL negated; >- int property = get_ucp(&ptr, &negated, errorcodeptr); >+ int property = get_ucp(&ptr, patternEnd, &negated, errorcodeptr); > if (property < 0) goto FAILED; > class_utf8 = TRUE; > *class_utf8data++ = ((-c == ESC_p) != negated)? >@@ -2026,7 +2046,7 @@ for (;; ptr++) > if (d == '\\') > { > const pcre_uchar *oldptr = ptr; >- d = check_escape(&ptr, errorcodeptr, *brackets, options, TRUE); >+ d = check_escape(&ptr, patternEnd, errorcodeptr, *brackets, options, TRUE); > > /* \b is backslash; \X is literal X; any other special means the '-' > was literal */ >@@ -2360,13 +2380,13 @@ for (;; ptr++) > but if PCRE_UNGREEDY is set, it works the other way round. We change the > repeat type to the non-default. */ > >- if (ptr[1] == '+') >+ if (ptr + 1 < patternEnd && ptr[1] == '+') > { > repeat_type = 0; /* Force greedy */ > possessive_quantifier = TRUE; > ptr++; > } >- else if (ptr[1] == '?') >+ else if (ptr + 1 < patternEnd && ptr[1] == '?') > { > repeat_type = greedy_non_default; > ptr++; >@@ -3161,6 +3181,7 @@ for (;; ptr++) > brackets, /* Extracting bracket count */ > &tempcode, /* Where to put code (updated) */ > &ptr, /* Input pointer (updated) */ >+ patternEnd, > errorcodeptr, /* Where to put an error message */ > (bravalue == OP_ASSERTBACK || > bravalue == OP_ASSERTBACK_NOT), /* TRUE if back assert */ >@@ -3260,7 +3281,7 @@ for (;; ptr++) > > /* Error if hit end of pattern */ > >- if (*ptr != ')') >+ if (ptr > patternEnd || *ptr != ')') > { > *errorcodeptr = ERR14; > goto FAILED; >@@ -3273,7 +3294,7 @@ for (;; ptr++) > > case '\\': > tempptr = ptr; >- c = check_escape(&ptr, errorcodeptr, *brackets, options, FALSE); >+ c = check_escape(&ptr, patternEnd, errorcodeptr, *brackets, options, FALSE); > > /* Handle metacharacters introduced by \. For ones like \d, the ESC_ values > are arranged to be the negation of the corresponding OP_values. For the >@@ -3286,7 +3307,7 @@ for (;; ptr++) > { > if (-c == ESC_Q) /* Handle start of quoted string */ > { >- if (ptr[1] == '\\' && ptr[2] == 'E') ptr += 2; /* avoid empty string */ >+ if (ptr + 2 < patternEnd && ptr[1] == '\\' && ptr[2] == 'E') ptr += 2; /* avoid empty string */ > else inescq = TRUE; > continue; > } >@@ -3319,7 +3340,7 @@ for (;; ptr++) > else if (-c == ESC_P || -c == ESC_p) > { > BOOL negated; >- int value = get_ucp(&ptr, &negated, errorcodeptr); >+ int value = get_ucp(&ptr, patternEnd, &negated, errorcodeptr); > previous = code; > *code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP; > *code++ = value; >@@ -3375,7 +3396,7 @@ for (;; ptr++) > #ifdef SUPPORT_UTF8 > if (utf8 && (c & 0xc0) == 0xc0) > { >- while ((ptr[1] & 0xc0) == 0x80) >+ while (ptr + 1 < patternEnd && (ptr[1] & 0xc0) == 0x80) > mcbuffer[mclength++] = *(++ptr); > } > #endif >@@ -3468,7 +3489,7 @@ Returns: TRUE on success > > static BOOL > compile_regex(int options, int oldims, int *brackets, uschar **codeptr, >- const pcre_uchar **ptrptr, int *errorcodeptr, BOOL lookbehind, int skipbytes, >+ const pcre_uchar **ptrptr, const pcre_uchar const* patternEnd, int *errorcodeptr, BOOL lookbehind, int skipbytes, > int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr, compile_data *cd) > { > const pcre_uchar *ptr = *ptrptr; >@@ -3513,7 +3534,7 @@ for (;;) > > /* Now compile the branch */ > >- if (!compile_branch(&options, brackets, &code, &ptr, errorcodeptr, >+ if (!compile_branch(&options, brackets, &code, &ptr, patternEnd, errorcodeptr, > &branchfirstbyte, &branchreqbyte, &bc, cd)) > { > *ptrptr = ptr; >@@ -3587,7 +3608,7 @@ for (;;) > following, except at the very end of the pattern. Return leaving the pointer > at the terminating char. */ > >- if (*ptr != '|') >+ if (ptr >= patternEnd || *ptr != '|') > { > int length = INT_CAST(code - last_branch); > do >@@ -3607,7 +3628,7 @@ for (;;) > > /* Resetting option if needed */ > >- if ((options & PCRE_IMS) != oldims && *ptr == ')') >+ if ((options & PCRE_IMS) != oldims && ptr < patternEnd && *ptr == ')') > { > *code++ = OP_OPT; > *code++ = oldims; >@@ -3888,15 +3909,15 @@ Returns: pointer to compiled data > */ > > EXPORT pcre * >-pcre_compile(const pcre_char *pattern, int options, const char **errorptr, >+pcre_compile(const pcre_char *pattern, int patternLength, int options, const char **errorptr, > int *erroroffset, const unsigned char *tables) > { >-return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables); >+return pcre_compile2(pattern, patternLength, options, NULL, errorptr, erroroffset, tables); > } > > > EXPORT pcre * >-pcre_compile2(const pcre_char *pattern, int options, int *errorcodeptr, >+pcre_compile2(const pcre_char *pattern, int patternLength, int options, int *errorcodeptr, > const char **errorptr, int *erroroffset, const unsigned char *tables) > { > real_pcre *re; >@@ -4010,8 +4031,12 @@ for any counted white space if an "exten > pattern. We can't be so clever for #-comments. */ > > ptr = (const pcre_uchar *)(pattern - 1); >-while ((c = *(++ptr)) != 0) >+const pcre_uchar const* patternEnd = (const pcre_uchar *)(pattern + patternLength); >+ >+while (++ptr < patternEnd) > { >+ c = *ptr; >+ > int min, max; > int class_optcount; > int bracket_length; >@@ -4034,8 +4059,10 @@ while ((c = *(++ptr)) != 0) > { > /* The space before the ; is to avoid a warning on a silly compiler > on the Macintosh. */ >- while ((c = *(++ptr)) != 0 && c != NEWLINE) ; >- if (c == 0) break; >+ while (++ptr < patternEnd && (c = *ptr) != NEWLINE) >+ ; >+ if (ptr == patternEnd) >+ break; > continue; > } > } >@@ -4046,7 +4073,7 @@ while ((c = *(++ptr)) != 0) > > if ((options & PCRE_AUTO_CALLOUT) != 0 && > c != '*' && c != '+' && c != '?' && >- (c != '{' || !is_counted_repeat(ptr + 1))) >+ (c != '{' || !is_counted_repeat(ptr + 1, patternEnd))) > length += 2 + 2*LINK_SIZE; > > switch(c) >@@ -4055,7 +4082,7 @@ while ((c = *(++ptr)) != 0) > character type. */ > > case '\\': >- c = check_escape(&ptr, &errorcode, bracount, options, FALSE); >+ c = check_escape(&ptr, patternEnd, &errorcode, bracount, options, FALSE); > if (errorcode != 0) goto PCRE_ERROR_RETURN; > > lastitemlength = 1; /* Default length of last item for repeats */ >@@ -4105,7 +4132,7 @@ while ((c = *(++ptr)) != 0) > BOOL negated; > length += 2; > lastitemlength = 2; >- if (get_ucp(&ptr, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN; >+ if (get_ucp(&ptr, patternEnd, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN; > continue; > #else > errorcode = ERR45; >@@ -4128,7 +4155,7 @@ while ((c = *(++ptr)) != 0) > if (refnum > compile_block.top_backref) > compile_block.top_backref = refnum; > length += 2; /* For single back reference */ >- if (ptr[1] == '{' && is_counted_repeat(ptr+2)) >+ if (ptr + 1 < patternEnd && ptr[1] == '{' && is_counted_repeat(ptr+2, patternEnd)) > { > ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode); > if (errorcode != 0) goto PCRE_ERROR_RETURN; >@@ -4136,7 +4163,8 @@ while ((c = *(++ptr)) != 0) > (min == 1 && max == -1)) > length++; > else length += 5; >- if (ptr[1] == '?') ptr++; >+ if (ptr + 1 < patternEnd && ptr[1] == '?') >+ ptr++; > } > } > continue; >@@ -4158,7 +4186,8 @@ while ((c = *(++ptr)) != 0) > class, or back reference. */ > > case '{': >- if (!is_counted_repeat(ptr+1)) goto NORMAL_CHAR; >+ if (!is_counted_repeat(ptr+1, patternEnd)) >+ goto NORMAL_CHAR; > ptr = read_repeat_counts(ptr+1, &min, &max, &errorcode); > if (errorcode != 0) goto PCRE_ERROR_RETURN; > >@@ -4180,10 +4209,11 @@ while ((c = *(++ptr)) != 0) > length += lastitemlength + ((max > 0)? 3 : 1); > } > >- if (ptr[1] == '?') ptr++; /* Needs no extra length */ >+ if (ptr + 1 < patternEnd && ptr[1] == '?') >+ ptr++; /* Needs no extra length */ > > POSESSIVE: /* Test for possessive quantifier */ >- if (ptr[1] == '+') >+ if (ptr + 1 < patternEnd && ptr[1] == '+') > { > ptr++; > length += 2 + 2*LINK_SIZE; /* Allow for atomic brackets */ >@@ -4208,7 +4238,7 @@ while ((c = *(++ptr)) != 0) > where we can. (In UTF-8 mode we can do this only for chars < 128.) */ > > case '[': >- if (*(++ptr) == '^') >+ if (++ptr < patternEnd && *ptr == '^') > { > class_optcount = 10; /* Greater than one */ > ptr++; >@@ -4221,13 +4251,14 @@ while ((c = *(++ptr)) != 0) > > /* Written as a "do" so that an initial ']' is taken as data */ > >- if (*ptr != 0) do >+ if (ptr < patternEnd) do > { > /* Inside \Q...\E everything is literal except \E */ > > if (inescq) > { >- if (*ptr != '\\' || ptr[1] != 'E') goto GET_ONE_CHARACTER; >+ if (*ptr != '\\' || ptr + 1 >= patternEnd || ptr[1] != 'E') >+ goto GET_ONE_CHARACTER; > inescq = FALSE; > ptr += 1; > continue; >@@ -4237,7 +4268,7 @@ while ((c = *(++ptr)) != 0) > > if (*ptr == '\\') > { >- c = check_escape(&ptr, &errorcode, bracount, options, TRUE); >+ c = check_escape(&ptr, patternEnd, &errorcode, bracount, options, TRUE); > if (errorcode != 0) goto PCRE_ERROR_RETURN; > > /* \b is backspace inside a class; \X is literal */ >@@ -4280,7 +4311,7 @@ while ((c = *(++ptr)) != 0) > /* Check the syntax for POSIX stuff. The bits we actually handle are > checked during the real compile phase. */ > >- else if (*ptr == '[' && check_posix_syntax(ptr, &ptr, &compile_block)) >+ else if (*ptr == '[' && ptr + 2 < patternEnd && check_posix_syntax(ptr, patternEnd, &ptr, &compile_block)) > { > ptr++; > class_optcount = 10; /* Make sure > 1 */ >@@ -4302,7 +4333,7 @@ while ((c = *(++ptr)) != 0) > if (utf8) > { > int extra = 0; >- GETCHARLEN(c, ptr, extra); >+ GETCHARLENEND(c, ptr, patternEnd, extra); > ptr += extra; > } > else c = *ptr; >@@ -4316,31 +4347,33 @@ while ((c = *(++ptr)) != 0) > class_optcount++; > > d = -1; >- if (ptr[1] == '-') >+ if (ptr + 1 < patternEnd && ptr[1] == '-') > { > pcre_uchar const *hyptr = ptr++; >- if (ptr[1] == '\\') >- { >- ptr++; >- d = check_escape(&ptr, &errorcode, bracount, options, TRUE); >- if (errorcode != 0) goto PCRE_ERROR_RETURN; >- if (-d == ESC_b) d = '\b'; /* backspace */ >- else if (-d == ESC_X) d = 'X'; /* literal X in a class */ >- } >- else if (ptr[1] != 0 && ptr[1] != ']') >- { >- ptr++; >-#ifdef SUPPORT_UTF8 >- if (utf8) >- { >- int extra = 0; >- GETCHARLEN(d, ptr, extra); >- ptr += extra; >- } >- else >-#endif >- d = *ptr; >- } >+ if (ptr + 1 < patternEnd) { >+ if (ptr[1] == '\\') >+ { >+ ptr++; >+ d = check_escape(&ptr, patternEnd, &errorcode, bracount, options, TRUE); >+ if (errorcode != 0) goto PCRE_ERROR_RETURN; >+ if (-d == ESC_b) d = '\b'; /* backspace */ >+ else if (-d == ESC_X) d = 'X'; /* literal X in a class */ >+ } >+ else if (ptr[1] != ']') >+ { >+ ptr++; >+ #ifdef SUPPORT_UTF8 >+ if (utf8) >+ { >+ int extra = 0; >+ GETCHARLENEND(d, ptr, patternEnd, extra); >+ ptr += extra; >+ } >+ else >+ #endif >+ d = *ptr; >+ } >+ } > if (d < 0) ptr = hyptr; /* go back to hyphen as data */ > } > >@@ -4437,9 +4470,9 @@ while ((c = *(++ptr)) != 0) > } > } > } >- while (*(++ptr) != 0 && (inescq || *ptr != ']')); /* Concludes "do" above */ >+ while (++ptr < patternEnd && (inescq || *ptr != ']')); /* Concludes "do" above */ > >- if (*ptr == 0) /* Missing terminating ']' */ >+ if (ptr >= patternEnd) /* Missing terminating ']' */ > { > errorcode = ERR6; > goto PCRE_ERROR_RETURN; >@@ -4456,7 +4489,7 @@ while ((c = *(++ptr)) != 0) > /* A repeat needs either 1 or 5 bytes. If it is a possessive quantifier, > we also need extra for wrapping the whole thing in a sub-pattern. */ > >- if (*ptr != 0 && ptr[1] == '{' && is_counted_repeat(ptr+2)) >+ if (ptr + 1 < patternEnd && ptr[1] == '{' && is_counted_repeat(ptr+2, patternEnd)) > { > ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode); > if (errorcode != 0) goto PCRE_ERROR_RETURN; >@@ -4464,12 +4497,15 @@ while ((c = *(++ptr)) != 0) > (min == 1 && max == -1)) > length++; > else length += 5; >- if (ptr[1] == '+') >- { >- ptr++; >- length += 2 + 2*LINK_SIZE; >- } >- else if (ptr[1] == '?') ptr++; >+ if (ptr + 1 < patternEnd) { >+ if (ptr[1] == '+') >+ { >+ ptr++; >+ length += 2 + 2*LINK_SIZE; >+ } >+ else if (ptr[1] == '?') >+ ptr++; >+ } > } > } > continue; >@@ -4482,18 +4518,19 @@ while ((c = *(++ptr)) != 0) > > /* Handle special forms of bracket, which all start (? */ > >- if (ptr[1] == '?') >+ if (ptr + 1 < patternEnd && ptr[1] == '?') > { > int set, unset; > int *optset; > >- switch (c = ptr[2]) >+ switch (c = (ptr + 2 < patternEnd ? ptr[2] : 0)) > { > /* Skip over comments entirely */ > case '#': > ptr += 3; >- while (*ptr != 0 && *ptr != ')') ptr++; >- if (*ptr == 0) >+ while (ptr < patternEnd && *ptr != ')') >+ ptr++; >+ if (ptr == patternEnd) > { > errorcode = ERR18; > goto PCRE_ERROR_RETURN; >@@ -4529,10 +4566,10 @@ while ((c = *(++ptr)) != 0) > if (c != 'R') > { > ++ptr; >- while ((DIGITAB(*ptr) & ctype_digit) != 0) >+ while (ptr < patternEnd && (DIGITAB(*ptr) & ctype_digit) != 0) > ++ptr; > } >- if (*ptr != ')') >+ if (ptr >= patternEnd || *ptr != ')') > { > errorcode = ERR29; > goto PCRE_ERROR_RETURN; >@@ -4543,7 +4580,7 @@ while ((c = *(++ptr)) != 0) > as to use the code for quantified brackets. We jump down and use the > code that handles this for real brackets. */ > >- if (ptr[1] == '+' || ptr[1] == '*' || ptr[1] == '?' || ptr[1] == '{') >+ if (ptr + 1 < patternEnd && (ptr[1] == '+' || ptr[1] == '*' || ptr[1] == '?' || ptr[1] == '{')) > { > length += 2 + 2 * LINK_SIZE; /* to make bracketed */ > duplength = 5 + 3 * LINK_SIZE; >@@ -4557,9 +4594,9 @@ while ((c = *(++ptr)) != 0) > > case 'C': > ptr += 3; >- while ((DIGITAB(*ptr) & ctype_digit) != 0) >+ while (ptr < patternEnd && (DIGITAB(*ptr) & ctype_digit) != 0) > ++ptr; >- if (*ptr != ')') >+ if (ptr >= patternEnd || *ptr != ')') > { > errorcode = ERR39; > goto PCRE_ERROR_RETURN; >@@ -4571,33 +4608,36 @@ while ((c = *(++ptr)) != 0) > > case 'P': > ptr += 3; >- if (*ptr == '<') >- { >- const pcre_uchar *p; /* Don't amalgamate; some compilers */ >- p = ++ptr; /* grumble at autoincrement in declaration */ >- while ((CTYPES(&compile_block, *ptr) & ctype_word) != 0) ptr++; >- if (*ptr != '>') >- { >- errorcode = ERR42; >- goto PCRE_ERROR_RETURN; >- } >- name_count++; >- if (ptr - p > max_name_size) max_name_size = INT_CAST(ptr - p); >- break; >- } >+ if (ptr < patternEnd) { >+ if (*ptr == '<') >+ { >+ const pcre_uchar *p; /* Don't amalgamate; some compilers */ >+ p = ++ptr; /* grumble at autoincrement in declaration */ >+ while (ptr < patternEnd && (CTYPES(&compile_block, *ptr) & ctype_word) != 0) >+ ptr++; >+ if (ptr >= patternEnd || *ptr != '>') >+ { >+ errorcode = ERR42; >+ goto PCRE_ERROR_RETURN; >+ } >+ name_count++; >+ if (ptr - p > max_name_size) max_name_size = INT_CAST(ptr - p); >+ break; >+ } > >- if (*ptr == '=' || *ptr == '>') >- { >- ++ptr; >- while ((CTYPES(&compile_block, *ptr) & ctype_word) != 0) >- ++ptr; >- if (*ptr != ')') >- { >- errorcode = ERR42; >- goto PCRE_ERROR_RETURN; >- } >- break; >- } >+ if (*ptr == '=' || *ptr == '>') >+ { >+ ++ptr; >+ while (ptr < patternEnd && (CTYPES(&compile_block, *ptr) & ctype_word) != 0) >+ ++ptr; >+ if (ptr >= patternEnd || *ptr != ')') >+ { >+ errorcode = ERR42; >+ goto PCRE_ERROR_RETURN; >+ } >+ break; >+ } >+ } > > /* Unknown character after (?P */ > >@@ -4608,7 +4648,7 @@ while ((c = *(++ptr)) != 0) > > case '<': > ptr += 3; >- if (*ptr == '=' || *ptr == '!') >+ if (ptr < patternEnd && (*ptr == '=' || *ptr == '!')) > { > branch_newextra = 1 + LINK_SIZE; > length += 1 + LINK_SIZE; /* For the first branch */ >@@ -4622,17 +4662,18 @@ while ((c = *(++ptr)) != 0) > group, or (a PCRE extension) by 'R' for a recursion test. */ > > case '(': >- if (ptr[3] == 'R' && ptr[4] == ')') >+ if (ptr + 4 < patternEnd && ptr[3] == 'R' && ptr[4] == ')') > { > ptr += 4; > length += 3; > } >- else if ((DIGITAB(ptr[3]) & ctype_digit) != 0) >+ else if (ptr + 3 < patternEnd && (DIGITAB(ptr[3]) & ctype_digit) != 0) > { > ptr += 4; > length += 3; >- while ((DIGITAB(*ptr) & ctype_digit) != 0) ptr++; >- if (*ptr != ')') >+ while (ptr < patternEnd && (DIGITAB(*ptr) & ctype_digit) != 0) >+ ptr++; >+ if (ptr >= patternEnd || *ptr != ')') > { > errorcode = ERR26; > goto PCRE_ERROR_RETURN; >@@ -4641,7 +4682,7 @@ while ((c = *(++ptr)) != 0) > else /* An assertion must follow */ > { > ptr++; /* Can treat like ':' as far as spacing is concerned */ >- if (ptr[2] != '?' || >+ if (ptr + 3 >= patternEnd || ptr[2] != '?' || > (ptr[3] != '=' && ptr[3] != '!' && ptr[3] != '<') ) > { > ptr += 2; /* To get right offset in message */ >@@ -4663,7 +4704,7 @@ while ((c = *(++ptr)) != 0) > > for (;; ptr++) > { >- c = *ptr; >+ c = ptr < patternEnd ? *ptr : 0; > switch (c) > { > case 'i': >@@ -4831,7 +4872,7 @@ while ((c = *(++ptr)) != 0) > /* Leave ptr at the final char; for read_repeat_counts this happens > automatically; for the others we need an increment. */ > >- if ((c = ptr[1]) == '{' && is_counted_repeat(ptr+2)) >+ if (ptr + 1 < patternEnd && (c = ptr[1]) == '{' && is_counted_repeat(ptr+2, patternEnd)) > { > ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode); > if (errorcode != 0) goto PCRE_ERROR_RETURN; >@@ -4868,7 +4909,7 @@ while ((c = *(++ptr)) != 0) > > /* Allow space for once brackets for "possessive quantifier" */ > >- if (ptr[1] == '+') >+ if (ptr + 1 < patternEnd && ptr[1] == '+') > { > ptr++; > length += 2 + 2*LINK_SIZE; >@@ -4882,7 +4923,7 @@ while ((c = *(++ptr)) != 0) > default: > NORMAL_CHAR: > >- if (inescq && c == '\\' && ptr[1] == 'E') >+ if (inescq && c == '\\' && ptr + 1 < patternEnd && ptr[1] == 'E') > { > inescq = FALSE; > ptr++; >@@ -4899,7 +4940,7 @@ while ((c = *(++ptr)) != 0) > { > if (IS_LEADING_SURROGATE(c)) > { >- c = DECODE_SURROGATE_PAIR(c, *ptr); >+ c = DECODE_SURROGATE_PAIR(c, ptr < patternEnd ? *ptr : 0); > ++ptr; > } > >@@ -4915,7 +4956,7 @@ while ((c = *(++ptr)) != 0) > #ifdef SUPPORT_UTF8 > if (utf8 && (c & 0xc0) == 0xc0) > { >- while ((ptr[1] & 0xc0) == 0x80) /* Can't flow over the end */ >+ while (ptr + 1 < patternEnd && (ptr[1] & 0xc0) == 0x80) /* Can't flow over the end */ > { /* because the end is marked */ > lastitemlength++; /* by a zero byte. */ > length++; >@@ -4988,7 +5029,7 @@ ptr = (const pcre_uchar *)pattern; > code = (uschar *)codestart; > *code = OP_BRA; > bracount = 0; >-(void)compile_regex(options, options & PCRE_IMS, &bracount, &code, &ptr, >+(void)compile_regex(options, options & PCRE_IMS, &bracount, &code, &ptr, patternEnd, > &errorcode, FALSE, 0, &firstbyte, &reqbyte, NULL, &compile_block); > re->top_bracket = bracount; > re->top_backref = compile_block.top_backref; >@@ -4997,7 +5038,7 @@ if (compile_block.nopartial) re->options > > /* If not reached end of pattern on success, there's an excess bracket. */ > >-if (errorcode == 0 && *ptr != 0) errorcode = ERR22; >+if (errorcode == 0 && ptr < patternEnd) errorcode = ERR22; > > /* Fill in the terminating state and check for disastrous overflow, but > if debugging, leave the test till after things are printed out. */ >Index: JavaScriptCore/pcre/pcre_internal.h >=================================================================== >--- JavaScriptCore/pcre/pcre_internal.h (revision 18457) >+++ JavaScriptCore/pcre/pcre_internal.h (working copy) >@@ -357,6 +357,14 @@ if ((c & 0xc0) == 0xc0) \ > ++len; \ > } > >+#define GETCHARLENEND(c, eptr, end, len) \ >+ c = eptr[0]; \ >+ if (IS_LEADING_SURROGATE(c)) \ >+ { \ >+ c = DECODE_SURROGATE_PAIR(c, eptr + 1 < end ? eptr[1] : 0); \ >+ ++len; \ >+ } >+ > #define ISMIDCHAR(c) IS_TRAILING_SURROGATE(c) > > #else >Index: JavaScriptCore/tests/mozilla/expected.html >=================================================================== >--- JavaScriptCore/tests/mozilla/expected.html (revision 18473) >+++ JavaScriptCore/tests/mozilla/expected.html (working copy) >@@ -7,11 +7,11 @@ > <p class='results_summary'> > Test List: All tests<br> > Skip List: (none)<br> >-1135 test(s) selected, 1127 test(s) completed, 70 failures reported (6.21% failed)<br> >-Engine command line: /Downloads/Builds/Release/testkjs <br> >-OS type: Darwin digdog.local 8.8.0 Darwin Kernel Version 8.8.0: Fri Sep 8 17:18:57 PDT 2006; root:xnu-792.12.6.obj~1/RELEASE_PPC Power Macintosh powerpc<br> >-Testcase execution time: 3 minutes, 50 seconds.<br> >-Tests completed on Thu Dec 7 19:06:30 2006.<br><br> >+1135 test(s) selected, 1127 test(s) completed, 68 failures reported (6.03% failed)<br> >+Engine command line: /WebKit/WebKitBuild/Release/testkjs <br> >+OS type: Darwin imac-g5.local 8.8.0 Darwin Kernel Version 8.8.0: Fri Sep 8 17:18:57 PDT 2006; root:xnu-792.12.6.obj~1/RELEASE_PPC Power Macintosh powerpc<br> >+Testcase execution time: 2 minutes, 7 seconds.<br> >+Tests completed on Fri Dec 29 08:01:11 2006.<br><br> > [ <a href='#fail_detail'>Failure Details</a> | <a href='#retest_list'>Retest List</a> | <a href='menu.html'>Test Selection Page</a> ]<br> > <hr> > <a name='fail_detail'></a> >@@ -68,7 +68,7 @@ Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> RegExp/hex-001.js JS regexp anchoring on empty match bug<br> > --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=2157<br> >-[1939] ./ecma_2/RegExp/regress-001.js line 18: TypeError: Object /a||b/ (result of expression /a||b/) does not allow calls.<br> >+[4638] ./ecma_2/RegExp/regress-001.js line 18: TypeError: Object /a||b/ (result of expression /a||b/) does not allow calls.<br> > </tt><br> > <a name='failure6'></a><dd><b>Testcase <a target='other_window' href='./ecma_2/RegExp/unicode-001.js'>ecma_2/RegExp/unicode-001.js</a> failed</b> <br> > [ <a href='#failure5'>Previous Failure</a> | <a href='#failure7'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >@@ -76,7 +76,7 @@ Complete testcase output was:<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> RegExp/unicode-001.js new RegExp( pattern, flags )<br> >-[1940] ./ecma_2/RegExp/unicode-001.js line 33: TypeError: Null value<br> >+[4639] ./ecma_2/RegExp/unicode-001.js line 20: SyntaxError: Invalid regular expression: PCRE does not support \L, \l, \N, \U, or \u<br> > </tt><br> > <a name='failure7'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Date/15.9.5.7.js'>ecma_3/Date/15.9.5.7.js</a> failed</b> <br> > [ <a href='#failure6'>Previous Failure</a> | <a href='#failure8'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >@@ -91,8 +91,8 @@ Failure messages were:<br> > --> (Mon Feb 28 2000 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br> > --> (Mon Feb 28 2000 15:59:59 GMT-0800 (PST)).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br> > --> (Tue Feb 29 2000 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br> >---> (Thu Dec 07 2006 19:05:31 GMT-0800 (PST)).toLocaleTimeString() = 7:05:31 PM PST FAILED! expected: 19:05:31<br> >---> (Fri Dec 08 2006 03:05:31 GMT-0800 (PST)).toLocaleTimeString() = 3:05:31 AM PST FAILED! expected: 03:05:31<br> >+--> (Fri Dec 29 2006 08:00:34 GMT-0800 (PST)).toLocaleTimeString() = 8:00:34 AM PST FAILED! expected: 08:00:34<br> >+--> (Fri Dec 29 2006 16:00:34 GMT-0800 (PST)).toLocaleTimeString() = 4:00:34 PM PST FAILED! expected: 16:00:34<br> > --> (Fri Dec 31 2004 16:00:00 GMT-0800 (PST)).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br> > --> (Fri Dec 31 2004 15:59:59 GMT-0800 (PST)).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br> > --> (Sat Jan 01 2005 00:00:00 GMT-0800 (PST)).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br> >@@ -129,20 +129,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: null<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure10'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/octal-002.js'>ecma_3/RegExp/octal-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=141078' target='other_window'>Bug Number 141078</a><br> >+<a name='failure10'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-001.js'>ecma_3/RegExp/perlstress-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br> > [ <a href='#failure9'>Previous Failure</a> | <a href='#failure11'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >-<tt>--> STATUS: Testing regexps containing octal escape sequences<br> >-Failure messages were:<br> >---> FAILED!: [reported from test()] Section 8 of test -<br> >---> FAILED!: [reported from test()] regexp = /a<br> >---> FAILED!: [reported from test()] string = 'a<br> >---> FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:<br> >---> FAILED!: [reported from test()] Expect: ["a<br> >---> FAILED!: [reported from test()] Actual: ["a"]<br> >---> FAILED!: [reported from test()] <br> >-</tt><br> >-<a name='failure11'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-001.js'>ecma_3/RegExp/perlstress-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br> >- [ <a href='#failure10'>Previous Failure</a> | <a href='#failure12'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing regular expression edge cases<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 218 of test -<br> >@@ -181,8 +169,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: ["aabbaa", "aa", "bb"]<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure12'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-002.js'>ecma_3/RegExp/perlstress-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br> >- [ <a href='#failure11'>Previous Failure</a> | <a href='#failure13'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure11'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-002.js'>ecma_3/RegExp/perlstress-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br> >+ [ <a href='#failure10'>Previous Failure</a> | <a href='#failure12'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing regular expression edge cases<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 40 of test -<br> >@@ -200,8 +188,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: null<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure13'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-72964.js'>ecma_3/RegExp/regress-72964.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72964' target='other_window'>Bug Number 72964</a><br> >- [ <a href='#failure12'>Previous Failure</a> | <a href='#failure14'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure12'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-72964.js'>ecma_3/RegExp/regress-72964.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72964' target='other_window'>Bug Number 72964</a><br> >+ [ <a href='#failure11'>Previous Failure</a> | <a href='#failure13'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing regular expressions containing non-Latin1 characters<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 3 of test -<br> >@@ -219,8 +207,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: null<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure14'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-78156.js'>ecma_3/RegExp/regress-78156.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=78156' target='other_window'>Bug Number 78156</a><br> >- [ <a href='#failure13'>Previous Failure</a> | <a href='#failure15'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure13'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-78156.js'>ecma_3/RegExp/regress-78156.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=78156' target='other_window'>Bug Number 78156</a><br> >+ [ <a href='#failure12'>Previous Failure</a> | <a href='#failure14'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing regular expressions with ^, $, and the m flag -<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 2 of test -<br> >@@ -238,295 +226,23 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: null<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure15'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-85721.js'>ecma_3/RegExp/regress-85721.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br> >- [ <a href='#failure14'>Previous Failure</a> | <a href='#failure16'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >-<tt>--> STATUS: Performance: execution of regular expression<br> >-Failure messages were:<br> >---> FAILED!: Section 4 of test -<br> >---> FAILED!: regexp = /[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: "]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: "]*)*")[^()<>@,;:".\\\[\]€-ÿ<br> >---> FAILED!: -]*(?:(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)|"[^\\€-ÿ<br> >---> FAILED!: "]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: "]*)*")[^()<>@,;:".\\\[\]€-ÿ<br> >---> FAILED!: -]*)*<[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:@[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*)*(?:,[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*)*)*:[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*)?(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: "]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: "]*)*")[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*)*>|(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: "]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: "]*)*")[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()OK.<br> >---> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br> >---> FAILED!: \[\]]|\\[^€-ÿ])*\])[ ]*(?:\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:(?:\\[^€-ÿ]|\([^\\€-ÿ<br> >---> FAILED!: ()]*(?:\\[^€-ÿ][^\\€-ÿ<br> >---> FAILED!: ()]*)*\))[^\\€-ÿ<br> >---> FAILED!: ()]*)*\)[ ]*)*)*)/g<br> >---> FAILED!: string = 'Jeffy<"That Tall Guy"@ora.com (this address is no longer acti\ve)>'<br> >---> FAILED!: ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: Expect: ["Jeffy<"That Tall Guy"@ora.com (this address is no longer active)>"]<br> >---> FAILED!: Actual: null<br> >---> FAILED!: <br> >-</tt><br> >-<a name='failure16'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-100199.js'>ecma_3/RegExp/regress-100199.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=100199' target='other_window'>Bug Number 100199</a><br> >- [ <a href='#failure15'>Previous Failure</a> | <a href='#failure17'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >-<tt>--> STATUS: [], [^] are valid RegExp conditions. Should not cause errors -<br> >-Failure messages were:<br> >---> FAILED!: [reported from test()] Section 19 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = 'abc'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["a"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 21 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = '/'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["/"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 22 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = '['<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 23 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = '['<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 24 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = ']'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["]"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 25 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = '[]'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 26 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = '[ ]'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 27 of test -<br> >---> FAILED!: [reported from test()] regexp = /[^]/<br> >---> FAILED!: [reported from test()] string = ']['<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["]"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 28 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'abc'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["ab"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 30 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'a['<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["a["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 31 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'a]'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anythingOK.<br> >---> FAILED!: [reported from test()] Expect: ["a]"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 32 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'a[]'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["a["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 33 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'a[ ]'<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["a["]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 34 of test -<br> >---> FAILED!: [reported from test()] regexp = /a[^]/<br> >---> FAILED!: [reported from test()] string = 'a]['<br> >---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br> >---> FAILED!: [reported from test()] Expect: ["a]"]<br> >---> FAILED!: [reported from test()] Actual: null<br> >---> FAILED!: [reported from test()] <br> >+<a name='failure14'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-100199.js'>ecma_3/RegExp/regress-100199.js</a> failed</b> <br> >+ [ <a href='#failure13'>Previous Failure</a> | <a href='#failure15'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<tt>Expected exit code 0, got 3<br> >+Testcase terminated with signal 0<br> >+Complete testcase output was:<br> >+[4766] ./ecma_3/RegExp/regress-100199.js line 48: SyntaxError: Invalid regular expression: missing terminating ] for character class<br> > </tt><br> >-<a name='failure17'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-188206.js'>ecma_3/RegExp/regress-188206.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=188206' target='other_window'>Bug Number 188206</a><br> >- [ <a href='#failure16'>Previous Failure</a> | <a href='#failure18'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure15'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-188206.js'>ecma_3/RegExp/regress-188206.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=188206' target='other_window'>Bug Number 188206</a><br> >+ [ <a href='#failure14'>Previous Failure</a> | <a href='#failure16'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Invalid use of regexp quantifiers should generate SyntaxErrors<br> > Failure messages were:<br> >---> FAILED!: [reported from test()] Section 1 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 2 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> > --> FAILED!: [reported from test()] Section 3 of test -<br> > --> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> > --> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 4 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 5 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 6 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 9 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 10 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 11 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 12 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 28 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 29 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 30 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 31 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 32 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 33 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 34 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 35 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> >---> FAILED!: [reported from test()] Section 36 of test -<br> >---> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br> >---> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure18'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-209919.js'>ecma_3/RegExp/regress-209919.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=209919' target='other_window'>Bug Number 209919</a><br> >- [ <a href='#failure17'>Previous Failure</a> | <a href='#failure19'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure16'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-209919.js'>ecma_3/RegExp/regress-209919.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=209919' target='other_window'>Bug Number 209919</a><br> >+ [ <a href='#failure15'>Previous Failure</a> | <a href='#failure17'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing regexp submatches with quantifiers<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 1 of test -<br> >@@ -565,39 +281,39 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Actual: ["1.000,00", "", ",00"]<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure19'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br> >- [ <a href='#failure18'>Previous Failure</a> | <a href='#failure20'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure17'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br> >+ [ <a href='#failure16'>Previous Failure</a> | <a href='#failure18'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2093] ./ecma_3/Statements/regress-194364.js line 1: SyntaxError: Parse error<br> >+[4792] ./ecma_3/Statements/regress-194364.js line 1: SyntaxError: Parse error<br> > </tt><br> >-<a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br> >- [ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure18'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br> >+ [ <a href='#failure17'>Previous Failure</a> | <a href='#failure19'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Unicode format-control character (Category Cf) test.<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Unicode format-control character test (Category Cf.)<br> > --> FAILED!: [reported from test()] Expected value 'no error', Actual value 'no‎ error'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br> >- [ <a href='#failure20'>Previous Failure</a> | <a href='#failure22'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure19'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br> >+ [ <a href='#failure18'>Previous Failure</a> | <a href='#failure20'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Unicode non-breaking space character test.<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Unicode non-breaking space character regexp test.<br> > --> FAILED!: [reported from test()] Expected value '0', Actual value '-1'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br> >- [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br> >+ [ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> JS1_2 Object.toString()<br> >-[2114] ./js1_2/Objects/toString-001.js line 103: TypeError: Object /^\{(.*)\}$/ (result of expression /^\{(.*)\}$/) does not allow calls.<br> >+[4813] ./js1_2/Objects/toString-001.js line 103: TypeError: Object /^\{(.*)\}$/ (result of expression /^\{(.*)\}$/) does not allow calls.<br> > </tt><br> >-<a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br> >- [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br> >+ [ <a href='#failure20'>Previous Failure</a> | <a href='#failure22'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> f.name = undefined FAILED! expected: a_test_function<br> >@@ -605,8 +321,8 @@ Failure messages were:<br> > --> (new Function()).name = undefined FAILED! expected: anonymous<br> > } FAILED! expected: <br> > </tt><br> >-<a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br> >- [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br> >+ [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 3, got 0<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >@@ -614,16 +330,16 @@ OK.<br> > --> function-001.js functions not separated by semicolons are errors in version 120 and higher<br> > --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br> > </tt><br> >-<a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/regexparg-1.js'>js1_2/function/regexparg-1.js</a> failed</b> <br> >- [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/regexparg-1.js'>js1_2/function/regexparg-1.js</a> failed</b> <br> >+ [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> JS_1.2 The variable statment<br> >-[2127] ./js1_2/function/regexparg-1.js line 80: TypeError: Object /abc/ (result of expression x) does not allow calls.<br> >+[4826] ./js1_2/function/regexparg-1.js line 80: TypeError: Object /abc/ (result of expression x) does not allow calls.<br> > </tt><br> >-<a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br> >- [ <a href='#failure25'>Previous Failure</a> | <a href='#failure27'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br> >+ [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > } FAILED! expected: <br> >@@ -632,8 +348,8 @@ Failure messages were:<br> > } FAILED! expected: <br> > } FAILED! expected: <br> > </tt><br> >-<a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br> >- [ <a href='#failure26'>Previous Failure</a> | <a href='#failure28'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br> >+ [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > } FAILED! expected: <br> >@@ -646,22 +362,22 @@ Failure messages were:<br> > } FAILED! expected: <br> > } FAILED! expected: <br> > </tt><br> >-<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br> >- [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br> >+ [ <a href='#failure25'>Previous Failure</a> | <a href='#failure27'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> (new String('x') == 'x') = true FAILED! expected: false<br> > --> ('x' == new String('x')) = true FAILED! expected: false<br> > </tt><br> >-<a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br> >- [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br> >+ [ <a href='#failure26'>Previous Failure</a> | <a href='#failure28'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> re=/x./g; re.lastIndex=4; re.exec('xyabcdxa') = xa FAILED! expected: ["xa"]<br> > --> re.exec('xyabcdef') = xy FAILED! expected: ["xy"]<br> > </tt><br> >-<a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br> >- [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br> >+ [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> (multiline == true) '123\n456'.match(/^4../) = null FAILED! expected: 456<br> >@@ -670,8 +386,8 @@ Failure messages were:<br> > --> (multiline == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24<br> > --> (multiline == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br> > </tt><br> >-<a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br> >- [ <a href='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br> >+ [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> (['$*'] == true) '123\n456'.match(/^4../) = null FAILED! expected: 456<br> >@@ -680,60 +396,60 @@ Failure messages were:<br> > --> (['$*'] == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24<br> > --> (['$*'] == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br> > </tt><br> >-<a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br> >- [ <a href='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br> >+ [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > 123xyz'.match(new RegExp('^\d+')) = null FAILED! expected: 123<br> > </tt><br> >-<a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/compile.js'>js1_2/regexp/compile.js</a> failed</b> <br> >- [ <a href='#failure32'>Previous Failure</a> | <a href='#failure34'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/compile.js'>js1_2/regexp/compile.js</a> failed</b> <br> >+ [ <a href='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> Executing script: compile.js<br> > --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: compile<br> >-[2154] ./js1_2/regexp/compile.js line 43: TypeError: Value undefined (result of expression regularExpression.compile) is not object.<br> >+[4853] ./js1_2/regexp/compile.js line 43: TypeError: Value undefined (result of expression regularExpression.compile) is not object.<br> > </tt><br> >-<a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br> >- [ <a href='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br> >+ [ <a href='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > xyz'.match(new RegExp('\d+$')) = null FAILED! expected: 890<br> > </tt><br> >-<a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-6359.js'>js1_2/regexp/regress-6359.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=6359' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=6359</a><br> >- [ <a href='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-6359.js'>js1_2/regexp/regress-6359.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=6359' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=6359</a><br> >+ [ <a href='#failure32'>Previous Failure</a> | <a href='#failure34'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=6359<br> >-[2170] ./js1_2/regexp/regress-6359.js line 56: TypeError: Object /(a*)b\1+/ (result of expression /(a*)b\1+/) does not allow calls.<br> >+[4869] ./js1_2/regexp/regress-6359.js line 56: TypeError: Object /(a*)b\1+/ (result of expression /(a*)b\1+/) does not allow calls.<br> > </tt><br> >-<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br> >- [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br> >+ [ <a href='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=9141<br> >-[2171] ./js1_2/regexp/regress-9141.js line 73: TypeError: Object /(?:xx|x)*/ (result of expression /(?:xx|x)*/) does not allow calls.<br> >+[4870] ./js1_2/regexp/regress-9141.js line 73: TypeError: Object /(?:xx|x)*/ (result of expression /(?:xx|x)*/) does not allow calls.<br> > </tt><br> >-<a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br> >- [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br> >+ [ <a href='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> Executing script: simple_form.js<br> > --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: simple form<br> >-[2172] ./js1_2/regexp/simple_form.js line 43: TypeError: Object /[0-9]{3}/ (result of expression /[0-9]{3}/) does not allow calls.<br> >+[4871] ./js1_2/regexp/simple_form.js line 43: TypeError: Object /[0-9]{3}/ (result of expression /[0-9]{3}/) does not allow calls.<br> > </tt><br> >-<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br> >- [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br> >+ [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> 'ab a b'.match(/a{2}/) = null FAILED! expected: a<br> > </tt><br> >-<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br> >- [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br> >+ [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> 'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,<br> >@@ -741,22 +457,22 @@ Failure messages were:<br> > --> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br> > --> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br> > </tt><br> >-<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br> >- [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br> >+ [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt><br> > Failure messages were:<br> > --> new Boolean(false) = true FAILED! expected: false<br> > </tt><br> >-<a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br> >- [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br> >+ [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Regression test for Bugzilla bug 99663<br> > Failure messages were:<br> > --> Section 1 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br> > --> Section 2 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br> > --> Section 3 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br> > </tt><br> >-<a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br> >- [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br> >+ [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 3, got 0<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >@@ -765,16 +481,16 @@ OK.<br> > --> function-001.js functions not separated by semicolons are errors in version 120 and higher<br> > --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br> > </tt><br> >-<a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br> >- [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br> >+ [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> script-001 NativeScript<br> >-[2199] ./js1_3/Script/script-001.js line 133: ReferenceError: Can't find variable: Script<br> >+[4897] ./js1_3/Script/script-001.js line 133: ReferenceError: Can't find variable: Script<br> > </tt><br> >-<a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br> >- [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br> >+ [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 3, got 0<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >@@ -783,97 +499,97 @@ OK.<br> > --> function-001.js functions not separated by semicolons are errors in version 120 and higher<br> > --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br> > </tt><br> >-<a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br> >- [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br> >+ [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br> >- [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br> >+ [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br> >- [ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br> >+ [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br> >- [ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br> >+ [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2244] ./js1_5/Exceptions/errstack-001.js line 247: TypeError: Undefined value<br> >+[4942] ./js1_5/Exceptions/errstack-001.js line 247: TypeError: Undefined value<br> > </tt><br> >-<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br> >- [ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br> >+ [ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> BUGNUMBER: 50447<br> > --> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br> >-[2245] ./js1_5/Exceptions/regress-50447.js line 65: TypeError: Undefined value<br> >+[4943] ./js1_5/Exceptions/regress-50447.js line 65: TypeError: Undefined value<br> > </tt><br> >-<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br> >- [ <a href='#failure49'>Previous Failure</a> | <a href='#failure51'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br> >+ [ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br> >- [ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br> >+ [ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br> >- [ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br> >+ [ <a href='#failure49'>Previous Failure</a> | <a href='#failure51'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br> >- [ <a href='#failure52'>Previous Failure</a> | <a href='#failure54'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br> >+ [ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2260] ./js1_5/Object/regress-90596-001.js line 48: TypeError: Value undefined (result of expression obj.toSource) is not object.<br> >+[4958] ./js1_5/Object/regress-90596-001.js line 48: TypeError: Value undefined (result of expression obj.toSource) is not object.<br> > </tt><br> >-<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br> >- [ <a href='#failure53'>Previous Failure</a> | <a href='#failure55'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br> >+ [ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2261] ./js1_5/Object/regress-90596-002.js line 48: ReferenceError: Can't find variable: uneval<br> >+[4959] ./js1_5/Object/regress-90596-002.js line 48: ReferenceError: Can't find variable: uneval<br> > </tt><br> >-<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br> >- [ <a href='#failure54'>Previous Failure</a> | <a href='#failure56'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br> >+ [ <a href='#failure52'>Previous Failure</a> | <a href='#failure54'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2263] ./js1_5/Object/regress-96284-001.js line 49: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br> >+[4961] ./js1_5/Object/regress-96284-001.js line 49: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br> > </tt><br> >-<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br> >- [ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br> >+ [ <a href='#failure53'>Previous Failure</a> | <a href='#failure55'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2264] ./js1_5/Object/regress-96284-002.js line 49: ReferenceError: Can't find variable: uneval<br> >+[4962] ./js1_5/Object/regress-96284-002.js line 49: ReferenceError: Can't find variable: uneval<br> > </tt><br> >-<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br> >- [ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br> >+ [ <a href='#failure54'>Previous Failure</a> | <a href='#failure56'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> BUGNUMBER: 44009<br> > --> STATUS: Testing that we don't crash on obj.toSource()<br> >-[2269] ./js1_5/Regress/regress-44009.js line 60: TypeError: Value undefined (result of expression obj.toSource) is not object.<br> >+[4967] ./js1_5/Regress/regress-44009.js line 60: TypeError: Value undefined (result of expression obj.toSource) is not object.<br> > </tt><br> >-<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br> >- [ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br> >+ [ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing calling obj.eval(str)<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Testing calling obj.eval(str); currently at expect[1] within test -<br> >@@ -881,8 +597,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Expected value '43', Actual value 'false'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br> >- [ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br> >+ [ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Reassignment to a const is NOT an error per ECMA<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 1 of test -<br> >@@ -892,28 +608,28 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Expected value '1', Actual value '2'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br> >- [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br> >+ [ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br> >- [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br> >+ [ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2295] ./js1_5/Regress/regress-127557.js line 75: ReferenceError: Can't find variable: clone<br> >+[4993] ./js1_5/Regress/regress-127557.js line 75: ReferenceError: Can't find variable: clone<br> > </tt><br> >-<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br> >- [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br> >+ [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2304] ./js1_5/Regress/regress-172699.js line 61: URIError: URI error<br> >+[5002] ./js1_5/Regress/regress-172699.js line 61: URIError: URI error<br> > </tt><br> >-<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br> >- [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br> >+ [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Don't crash on extraneous arguments to str.match(), etc.<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 14 of test -<br> >@@ -963,8 +679,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'ABC Zbc'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br> >- [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br> >+ [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing |with (x) {function f() {}}| when |x.f| already exists<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Section 2 of test -<br> >@@ -979,15 +695,15 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] }', Actual value '0'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br> >- [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br> >+ [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> >-[2329] ./js1_5/Scope/regress-220584.js line 56: ReferenceError: Can't find variable: Script<br> >+[5027] ./js1_5/Scope/regress-220584.js line 56: ReferenceError: Can't find variable: Script<br> > </tt><br> >-<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br> >- [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br> >+ [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: Testing scope after changing obj.__proto__<br> > Failure messages were:<br> > --> FAILED!: [reported from test()] Step 1: setting obj.__proto__ = global object<br> >@@ -998,8 +714,8 @@ Failure messages were:<br> > --> FAILED!: [reported from test()] Expected value 'undefined', Actual value '1'<br> > --> FAILED!: [reported from test()] <br> > </tt><br> >-<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br> >- [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br> >+ [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>--> STATUS: E4X should be enabled even when e4x=1 not specified<br> > Failure messages were:<br> > --> FAILED!: E4X should be enabled even when e4x=1 not specified: XML()<br> >@@ -1009,27 +725,27 @@ Failure messages were:<br> > --> FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'<br> > --> FAILED!: <br> > </tt><br> >-<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br> >- [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br> >+ [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br> >- [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br> >+ [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > Testcase produced no output!</tt><br> >-<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br> >- [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> >+<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br> >+ [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br> > <tt>Expected exit code 0, got 3<br> > Testcase terminated with signal 0<br> > Complete testcase output was:<br> > --> BUGNUMBER: 306591<br> > --> STATUS: String static methods<br> > --> STATUS: See https://bugzilla.mozilla.org/show_bug.cgi?id=304828<br> >-[2351] ./js1_6/String/regress-306591.js line 48: TypeError: Value undefined (result of expression String.split) is not object.<br> >+[5049] ./js1_6/String/regress-306591.js line 48: TypeError: Value undefined (result of expression String.split) is not object.<br> > </tt><br> > </dl> > [ <a href='#tippy_top'>Top of Page</a> | <a href='#fail_detail'>Top of Failures</a> ]<br> >@@ -1037,9 +753,9 @@ Complete testcase output was:<br> > <pre> > <a name='retest_list'></a> > <h2>Retest List</h2><br> >-# Retest List, kjs, generated Thu Dec 7 19:06:30 2006. >+# Retest List, kjs, generated Fri Dec 29 08:01:11 2006. > # Original test base was: All tests. >-# 1127 of 1135 test(s) were completed, 70 failures reported. >+# 1127 of 1135 test(s) were completed, 68 failures reported. > ecma/GlobalObject/15.1.2.2-2.js > ecma/LexicalConventions/7.7.3-1.js > ecma/TypeConversion/9.3.1-3.js >@@ -1049,12 +765,10 @@ ecma_2/RegExp/unicode-001.js > ecma_3/Date/15.9.5.7.js > ecma_3/FunExpr/fe-001.js > ecma_3/RegExp/15.10.2-1.js >-ecma_3/RegExp/octal-002.js > ecma_3/RegExp/perlstress-001.js > ecma_3/RegExp/perlstress-002.js > ecma_3/RegExp/regress-72964.js > ecma_3/RegExp/regress-78156.js >-ecma_3/RegExp/regress-85721.js > ecma_3/RegExp/regress-100199.js > ecma_3/RegExp/regress-188206.js > ecma_3/RegExp/regress-209919.js >Index: WebCore/ChangeLog >=================================================================== >--- WebCore/ChangeLog (revision 18457) >+++ WebCore/ChangeLog (working copy) >@@ -1,3 +1,14 @@ >+2006-12-29 Mitz Pettel <mitz@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ - WebCore changes for http://bugs.webkit.org/show_bug.cgi?id=11849 >+ REGRESSION (r18182): Google Calendar is broken (a regular expression containing a null character is not parsed correctly) >+ >+ * platform/RegularExpression.cpp: >+ (WebCore::RegularExpression::Private::compile): Changed to not null-terminate >+ the pattern string and instead pass its length to pcre_compile. >+ > 2006-12-28 Mitz Pettel <mitz@webkit.org> > > Reviewed by Darin. >Index: WebCore/platform/RegularExpression.cpp >=================================================================== >--- WebCore/platform/RegularExpression.cpp (revision 18457) >+++ WebCore/platform/RegularExpression.cpp (working copy) >@@ -103,9 +103,7 @@ void RegularExpression::Private::compile > > const char *errorMessage; > int errorOffset; >- char null = 0; >- p.append(null); >- regex = pcre_compile(reinterpret_cast<const uint16_t *>(p.unicode()), caseSensitive ? 0 : PCRE_CASELESS, &errorMessage, &errorOffset, NULL); >+ regex = pcre_compile(reinterpret_cast<const uint16_t *>(p.unicode()), p.length(), caseSensitive ? 0 : PCRE_CASELESS, &errorMessage, &errorOffset, NULL); > if (regex == NULL) { > LOG_ERROR("RegularExpression: pcre_compile failed with '%s'", errorMessage); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 11849
:
12081
|
12088
|
12092
|
12106
|
12112
|
12144
|
12164