diff options
Diffstat (limited to 'lib/core')
-rw-r--r-- | lib/core/seqs.nim | 2 | ||||
-rw-r--r-- | lib/core/strs.nim | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/core/seqs.nim b/lib/core/seqs.nim index 20ea9e035..2b39c6b41 100644 --- a/lib/core/seqs.nim +++ b/lib/core/seqs.nim @@ -118,7 +118,7 @@ proc shrink*[T](x: var seq[T]; newLen: Natural) = when not supportsCopyMem(T): for i in countdown(x.len - 1, newLen - 1): `=destroy`(x[i]) - + # XXX This is wrong for const seqs that were moved into 'x'! cast[ptr NimSeqV2[T]](addr x).len = newLen proc grow*[T](x: var seq[T]; newLen: Natural; value: T) = diff --git a/lib/core/strs.nim b/lib/core/strs.nim index e55c88493..406efe5a1 100644 --- a/lib/core/strs.nim +++ b/lib/core/strs.nim @@ -164,6 +164,7 @@ proc mnewString(len: int): NimStringV2 {.compilerProc.} = proc setLengthStrV2(s: var NimStringV2, newLen: int) {.compilerRtl.} = if newLen > s.len: prepareAdd(s, newLen - s.len) + # XXX This is wrong for const strings that got moved into 's'! s.len = newLen # this also only works because the destructor # looks at s.p and not s.len |