From a8b20e8129174981d510b0aada6df937d02e8d4c Mon Sep 17 00:00:00 2001 From: pgkos Date: Mon, 26 Nov 2018 18:59:24 +0100 Subject: [PATCH] fixes #9800 (#9804) [backport] * fixes #9800 * add tests for #9800 (cherry picked from commit 518c72e57a9c787a2d59b0895263427b4774ecad) --- lib/pure/unicode.nim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/pure/unicode.nim b/lib/pure/unicode.nim index 9453395f30..22521d77d0 100644 --- a/lib/pure/unicode.nim +++ b/lib/pure/unicode.nim @@ -1935,9 +1935,9 @@ proc strip*(s: string, leading = true, trailing = true, e_i = l_i - 1 break dec(i) - let newLen = e_i - s_i + let newLen = e_i - s_i + 1 result = newStringOfCap(newLen) - if e_i > s_i: + if newLen > 0: result.add s[s_i .. e_i] proc repeat*(c: Rune, count: Natural): string {.noSideEffect, @@ -2191,6 +2191,9 @@ when isMainModule: doAssert s.split(' '.Rune, maxsplit = 1) == @["", "this is an example "] block stripTests: + doAssert(strip("") == "") + doAssert(strip(" ") == "") + doAssert(strip("y") == "y") doAssert(strip(" foofoofoo ") == "foofoofoo") doAssert(strip("sfoofoofoos", runes = ['s'.Rune]) == "foofoofoo")