diff options
-rw-r--r-- | src/RESearch.cxx | 2 | ||||
-rw-r--r-- | test/simpleTests.py | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/RESearch.cxx b/src/RESearch.cxx index ffcc58d36..87f2a6985 100644 --- a/src/RESearch.cxx +++ b/src/RESearch.cxx @@ -788,7 +788,7 @@ int RESearch::Execute(CharacterIndexer &ci, int lp, int endp) { } case CHR: /* ordinary char: locate it fast */ c = *(ap+1); - while ((lp < endp) && (ci.CharAt(lp) != c)) + while ((lp < endp) && (static_cast<unsigned char>(ci.CharAt(lp)) != c)) lp++; if (lp >= endp) /* if EOS, fail, else fall thru. */ return 0; diff --git a/test/simpleTests.py b/test/simpleTests.py index 275409a22..9085bcf87 100644 --- a/test/simpleTests.py +++ b/test/simpleTests.py @@ -868,6 +868,14 @@ class TestSearch(unittest.TestCase): self.assertEquals(0, self.ed.FindBytes(0, self.ed.Length, b"\S", flags)) self.assertEquals(2, self.ed.FindBytes(0, self.ed.Length, b"\x62", flags)) + def testRENonASCII(self): + self.ed.InsertText(0, b"\xAD") + flags = self.ed.SCFIND_REGEXP + self.assertEquals(-1, self.ed.FindBytes(0, self.ed.Length, b"\\x10", flags)) + self.assertEquals(2, self.ed.FindBytes(0, self.ed.Length, b"\\x09", flags)) + self.assertEquals(-1, self.ed.FindBytes(0, self.ed.Length, b"\\xAB", flags)) + self.assertEquals(0, self.ed.FindBytes(0, self.ed.Length, b"\\xAD", flags)) + class TestProperties(unittest.TestCase): def setUp(self): |