From 9d51d00096890f44f751e690dc317028812eb2ab Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Thu, 4 Oct 2012 15:54:08 +1000 Subject: Fix bug where non-ASCII hex escape did not match. --- src/RESearch.cxx | 2 +- test/simpleTests.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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(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): -- cgit v1.2.3