Chromium Code Reviews| Index: src/scanner-base.cc |
| diff --git a/src/scanner-base.cc b/src/scanner-base.cc |
| index e141d0eb70726bddab28d09c3540767cf0ef754d..91ea9e5133afa54905f2e7e71d45d792bd95fbe5 100644 |
| --- a/src/scanner-base.cc |
| +++ b/src/scanner-base.cc |
| @@ -99,9 +99,9 @@ uc32 Scanner::ScanHexEscape(uc32 c, int length) { |
| // Octal escapes of the forms '\0xx' and '\xxx' are not a part of |
| // ECMA-262. Other JS VMs support them. |
|
Lasse Reichstein
2011/01/31 06:05:19
Add comment here (or, preferably, at the declarati
Martin Maly
2011/01/31 22:44:06
Done.
|
| uc32 Scanner::ScanOctalEscape(uc32 c, int length) { |
| - octal_pos_ = source_pos() - 1; // Already advanced |
| uc32 x = c - '0'; |
| - for (int i = 0; i < length; i++) { |
| + int i = 0; |
| + for (; i < length; i++) { |
| int d = c0_ - '0'; |
| if (d < 0 || d > 7) break; |
| int nx = x * 8 + d; |
| @@ -109,6 +109,10 @@ uc32 Scanner::ScanOctalEscape(uc32 c, int length) { |
| x = nx; |
| Advance(); |
| } |
| + // Allow \0 only. Rest are octal escapes, illegal in strict mode. |
|
Lasse Reichstein
2011/01/31 06:05:19
We "allow" everything (we don't reject anything he
Martin Maly
2011/01/31 22:44:06
Done.
|
| + if (c != '\0' || i > 0) { |
| + octal_pos_ = source_pos() - i - 1; // Already advanced |
| + } |
| return x; |
| } |