diff options
-rw-r--r-- | changelog.md | 3 | ||||
-rw-r--r-- | lib/pure/parseutils.nim | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/changelog.md b/changelog.md index 38f9589db..49567e929 100644 --- a/changelog.md +++ b/changelog.md @@ -115,6 +115,9 @@ echo f serve no purpose whatsoever. - `httpclient.newHttpClient` and `httpclient.newAsyncHttpClient` added `headers` argument to set initial HTTP Headers, instead of a hardcoded empty `newHttpHeader()`. +- `parseutils.parseUntil` has now a different behaviour if the `until` parameter is + empty. This was required for intuitive behaviour of the strscans module + (see bug #13605). ## Language additions diff --git a/lib/pure/parseutils.nim b/lib/pure/parseutils.nim index 2c21c4952..6116751ff 100644 --- a/lib/pure/parseutils.nim +++ b/lib/pure/parseutils.nim @@ -354,12 +354,13 @@ proc parseUntil*(s: string, token: var string, until: string, doAssert myToken == "Hello " doAssert parseUntil("Hello World", myToken, "Wor", 2) == 4 doAssert myToken == "llo " - if until.len == 0: - token.setLen(0) - return 0 + when (NimMajor, NimMinor) <= (1, 0): + if until.len == 0: + token.setLen(0) + return 0 var i = start while i < s.len: - if s[i] == until[0]: + if until.len > 0 and s[i] == until[0]: var u = 1 while i+u < s.len and u < until.len and s[i+u] == until[u]: inc u |