Changeset 15522 in webkit for trunk/JavaScriptCore
- Timestamp:
- Jul 19, 2006, 12:06:13 AM (19 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r15521 r15522 1 2006-07-18 Maciej Stachowiak <[email protected]> 2 3 Reviewed by Adele Peterson. 4 5 <rdar://problem/4589530> REGRESSION: null character in JS string causes parse error (works in Tiger and in other browsers) 6 7 * kjs/lexer.cpp: 8 (Lexer::shift): 9 (Lexer::lex): 10 (Lexer::record16): 11 (Lexer::scanRegExp): 12 * kjs/lexer.h: 13 1 14 2006-07-18 Tim Omernick <[email protected]> 2 15 -
trunk/JavaScriptCore/kjs/lexer.cpp
r14821 r15522 126 126 do { 127 127 if (pos >= length) { 128 next3 = 0;128 next3 = -1; 129 129 break; 130 130 } … … 189 189 shift(1); 190 190 state = InMultiLineComment; 191 } else if (current == 0) {191 } else if (current == -1) { 192 192 if (!terminator && !delimited) { 193 193 // automatic semicolon insertion if program incomplete … … 246 246 shift(1); 247 247 setDone(String); 248 } else if ( current == 0 || isLineTerminator()) {248 } else if (isLineTerminator() || current == -1) { 249 249 setDone(Bad); 250 250 } else if (current == '\\') { … … 321 321 } else 322 322 state = Start; 323 } else if (current == 0) {323 } else if (current == -1) { 324 324 setDone(Eof); 325 325 } 326 326 break; 327 327 case InMultiLineComment: 328 if (current == 0) {328 if (current == -1) { 329 329 setDone(Bad); 330 330 } else if (isLineTerminator()) { … … 805 805 } 806 806 807 void Lexer::record16(int c) 808 { 809 ASSERT(c >= 0); 810 ASSERT(c <= USHRT_MAX); 811 record16(UChar(static_cast<unsigned short>(c))); 812 } 813 807 814 void Lexer::record16(KJS::UChar c) 808 815 { … … 826 833 827 834 while (1) { 828 if (isLineTerminator() || current == 0)835 if (isLineTerminator() || current == -1) 829 836 return false; 830 837 else if (current != '/' || lastWasEscape == true || inBrackets == true) -
trunk/JavaScriptCore/kjs/lexer.h
r12317 r15522 134 134 135 135 void record8(unsigned short c); 136 void record16(int c); 136 137 void record16(UChar c); 137 138 … … 147 148 bool error; 148 149 149 // current and following unicode characters 150 unsigned short current, next1, next2, next3;150 // current and following unicode characters (int to allow for -1 for end-of-file marker) 151 int current, next1, next2, next3; 151 152 152 153 UString **strings;
Note:
See TracChangeset
for help on using the changeset viewer.