diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2017-11-29 00:32:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-29 00:32:07 +0000 |
commit | 5a58caa9c15dd44a6208aa8d1e52d82033bb4510 (patch) | |
tree | ad8db4e3ec99e0843aa199aa103ac18aa3422830 /lib | |
parent | c00de13e1ff10775ff5979e057031e17cb646dfd (diff) | |
parent | 5196cc3a5410749934858d7356ef4605bb52f544 (diff) | |
download | Nim-5a58caa9c15dd44a6208aa8d1e52d82033bb4510.tar.gz |
Merge pull request #6817 from nim-lang/fixes-6223
Fixes #6223.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/unicode.nim | 12 | ||||
-rw-r--r-- | lib/system.nim | 5 |
2 files changed, 10 insertions, 7 deletions
diff --git a/lib/pure/unicode.nim b/lib/pure/unicode.nim index 7d9c3108b..257c620f7 100644 --- a/lib/pure/unicode.nim +++ b/lib/pure/unicode.nim @@ -293,33 +293,33 @@ proc runeSubStr*(s: string, pos:int, len:int = int.high): string = if pos < 0: let (o, rl) = runeReverseOffset(s, -pos) if len >= rl: - result = s[o.. s.len-1] + result = s.substr(o, s.len-1) elif len < 0: let e = rl + len if e < 0: result = "" else: - result = s[o.. runeOffset(s, e-(rl+pos) , o)-1] + result = s.substr(o, runeOffset(s, e-(rl+pos) , o)-1) else: - result = s[o.. runeOffset(s, len, o)-1] + result = s.substr(o, runeOffset(s, len, o)-1) else: let o = runeOffset(s, pos) if o < 0: result = "" elif len == int.high: - result = s[o.. s.len-1] + result = s.substr(o, s.len-1) elif len < 0: let (e, rl) = runeReverseOffset(s, -len) discard rl if e <= 0: result = "" else: - result = s[o.. e-1] + result = s.substr(o, e-1) else: var e = runeOffset(s, len, o) if e < 0: e = s.len - result = s[o.. e-1] + result = s.substr(o, e-1) const alphaRanges = [ diff --git a/lib/system.nim b/lib/system.nim index 387973f4b..b9f01c306 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -3529,7 +3529,10 @@ when hasAlloc or defined(nimscript): ## .. code-block:: nim ## var s = "abcdef" ## assert s[1..3] == "bcd" - result = s.substr(s ^^ x.a, s ^^ x.b) + let a = s ^^ x.a + let L = (s ^^ x.b) - a + 1 + result = newString(L) + for i in 0 ..< L: result[i] = s[i + a] proc `[]=`*[T, U](s: var string, x: HSlice[T, U], b: string) = ## slice assignment for strings. If |