Forgotten OP_BRAZERO len addition. Fixes Bug 586499 - TM: Yarr mochitest failure browser_plainTextLinks.js. r=gal

This commit is contained in:
Chris Leary 2010-08-12 09:08:48 -07:00
Родитель 50a9815e26
Коммит 31b0d25293
1 изменённых файлов: 6 добавлений и 6 удалений

Просмотреть файл

@ -2033,7 +2033,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
return -1; return -1;
} }
int length = 3 + LINK_SIZE; /* For initial BRA plus length */ int length = BRA_LEN; /* For initial BRA. */
int branch_extra = 0; int branch_extra = 0;
int lastitemlength = 0; int lastitemlength = 0;
unsigned brastackptr = 0; unsigned brastackptr = 0;
@ -2351,7 +2351,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
case '(': { case '(': {
int branch_newextra = 0; int branch_newextra = 0;
int bracket_length = 3 + LINK_SIZE; int bracket_length = BRA_LEN;
bool capturing = false; bool capturing = false;
/* Handle special forms of bracket, which all start (? */ /* Handle special forms of bracket, which all start (? */
@ -2379,7 +2379,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
return -1; return -1;
} }
} else } else
capturing = 1; capturing = true;
/* Capturing brackets must be counted so we can process escapes in a /* Capturing brackets must be counted so we can process escapes in a
Perlish way. If the number exceeds EXTRACT_BASIC_MAX we are going to need Perlish way. If the number exceeds EXTRACT_BASIC_MAX we are going to need
@ -2417,7 +2417,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
case ')': { case ')': {
int duplength; int duplength;
length += 1 + LINK_SIZE; length += KET_LEN;
if (brastackptr > 0) { if (brastackptr > 0) {
duplength = length - brastack[--brastackptr]; duplength = length - brastack[--brastackptr];
branch_extra = bralenstack[brastackptr]; branch_extra = bralenstack[brastackptr];
@ -2458,7 +2458,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
if (minRepeats == 0) { if (minRepeats == 0) {
length++; length++;
if (maxRepeats > 0) { if (maxRepeats > 0) {
repeatsLength = multiplyWithOverflowCheck(maxRepeats - 1, duplength + BRA_LEN + KET_LEN); repeatsLength = multiplyWithOverflowCheck(maxRepeats - 1, duplength + BRA_LEN + KET_LEN + OPCODE_LEN);
if (repeatsLength < 0) { if (repeatsLength < 0) {
errorcode = ERR16; errorcode = ERR16;
return -1; return -1;
@ -2529,7 +2529,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
} }
} }
length += 2 + LINK_SIZE; /* For final KET and END */ length += KET_LEN + OPCODE_LEN; /* For final KET and END */
cd.numCapturingBrackets = bracount; cd.numCapturingBrackets = bracount;
return length; return length;