Index: src/interpreter-irregexp.cc |
diff --git a/src/interpreter-irregexp.cc b/src/interpreter-irregexp.cc |
index 5abeb5a10627122df46f963461d0b4db17b93693..e678e6cf120d1b92eeb4ef6ab98e2a55fd7351e4 100644 |
--- a/src/interpreter-irregexp.cc |
+++ b/src/interpreter-irregexp.cc |
@@ -73,9 +73,15 @@ static bool BackRefMatchesNoCase(Canonicalize* interp_canonicalize, |
unsigned int old_char = subject[from++]; |
unsigned int new_char = subject[current++]; |
if (old_char == new_char) continue; |
- if (old_char - 'A' <= 'Z' - 'A') old_char |= 0x20; |
- if (new_char - 'A' <= 'Z' - 'A') new_char |= 0x20; |
+ // Convert both characters to lower case. |
+ old_char |= 0x20; |
+ new_char |= 0x20; |
if (old_char != new_char) return false; |
+ // Not letters in the ASCII range and Latin-1 range. |
+ if (!(old_char - 'a' <= 'z' - 'a') && |
+ !(old_char - 224 <= 254 - 224 && old_char != 247)) { |
+ return false; |
+ } |
} |
return true; |
} |