fixes yet another regression
This commit is contained in:
parent
f131867de7
commit
25b4d26e22
1 changed files with 12 additions and 3 deletions
|
|
@ -233,7 +233,7 @@ proc resizeString(dest: NimString, addlen: int): NimString {.compilerRtl.} =
|
||||||
elif dest.len + addlen <= dest.space:
|
elif dest.len + addlen <= dest.space:
|
||||||
result = dest
|
result = dest
|
||||||
else: # slow path:
|
else: # slow path:
|
||||||
var sp = max(resize(dest.space), dest.len + addlen)
|
let sp = max(resize(dest.space), dest.len + addlen)
|
||||||
when defined(nimIncrSeqV3):
|
when defined(nimIncrSeqV3):
|
||||||
result = rawNewStringNoInit(sp)
|
result = rawNewStringNoInit(sp)
|
||||||
result.len = dest.len
|
result.len = dest.len
|
||||||
|
|
@ -256,13 +256,22 @@ proc appendChar(dest: NimString, c: char) {.compilerproc, inline.} =
|
||||||
inc(dest.len)
|
inc(dest.len)
|
||||||
|
|
||||||
proc setLengthStr(s: NimString, newLen: int): NimString {.compilerRtl.} =
|
proc setLengthStr(s: NimString, newLen: int): NimString {.compilerRtl.} =
|
||||||
var n = max(newLen, 0)
|
let n = max(newLen, 0)
|
||||||
if s == nil:
|
if s == nil:
|
||||||
result = mnewString(newLen)
|
result = mnewString(newLen)
|
||||||
elif n <= s.space:
|
elif n <= s.space:
|
||||||
result = s
|
result = s
|
||||||
else:
|
else:
|
||||||
result = resizeString(s, n)
|
let sp = max(resize(s.space), newLen)
|
||||||
|
when defined(nimIncrSeqV3):
|
||||||
|
result = rawNewStringNoInit(sp)
|
||||||
|
result.len = s.len
|
||||||
|
copyMem(addr result.data[0], unsafeAddr(s.data[0]), s.len+1)
|
||||||
|
zeroMem(addr result.data[s.len], newLen - s.len)
|
||||||
|
else:
|
||||||
|
result = cast[NimString](growObj(dest, sizeof(TGenericSeq) + sp + 1))
|
||||||
|
result.reserved = sp
|
||||||
|
#result = resizeString(s, n)
|
||||||
result.len = n
|
result.len = n
|
||||||
result.data[n] = '\0'
|
result.data[n] = '\0'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue