summary refs log tree commit diff stats
path: root/src/nre.nim
diff options
context:
space:
mode:
authorOleh Prypin <blaxpirit@gmail.com>2015-04-10 11:20:05 +0300
committerOleh Prypin <blaxpirit@gmail.com>2015-04-10 15:34:22 +0300
commit16577f816749859f8d169ffbdd4415ca4747e75a (patch)
treee6476c419acd5e7752332b46c377f1f16af7a244 /src/nre.nim
parenta66527919209d84e3143776636abf0b73c9ef3f7 (diff)
downloadNim-16577f816749859f8d169ffbdd4415ca4747e75a.tar.gz
Fix zero-length matches for multibyte characters
Diffstat (limited to 'src/nre.nim')
-rw-r--r--src/nre.nim6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nre.nim b/src/nre.nim
index f9c6b3509..b601d8222 100644
--- a/src/nre.nim
+++ b/src/nre.nim
@@ -352,16 +352,16 @@ iterator findIter*(str: string, pattern: Regex, start = 0, endpos = int.high): R
     if match.isNone:
       # either the end of the input or the string
       # cannot be split here
-      offset += 1
-
       if matchesCrLf and offset < (str.len - 1) and
          str[offset] == '\r' and str[offset + 1] == '\l':
         # if PCRE treats CrLf as newline, skip both at the same time
-        offset += 1
+        offset += 2
       elif unicode:
         # XXX what about invalid unicode?
         offset += str.runeLenAt(offset)
         assert(offset <= strlen)
+      else:
+        offset += 1
     else:
       offset = match.get.matchBounds.b + 1