Merge pull request #2230 from Archs/devel
streams.ssWriteData: Call setLen only when new data truly increases the underlying string buffer
This commit is contained in:
commit
b1656f2db4
1 changed files with 6 additions and 4 deletions
|
|
@ -224,10 +224,12 @@ proc ssReadData(s: Stream, buffer: pointer, bufLen: int): int =
|
||||||
|
|
||||||
proc ssWriteData(s: Stream, buffer: pointer, bufLen: int) =
|
proc ssWriteData(s: Stream, buffer: pointer, bufLen: int) =
|
||||||
var s = StringStream(s)
|
var s = StringStream(s)
|
||||||
if bufLen > 0:
|
if bufLen <= 0:
|
||||||
setLen(s.data, s.data.len + bufLen)
|
return
|
||||||
copyMem(addr(s.data[s.pos]), buffer, bufLen)
|
if s.pos + bufLen > s.data.len:
|
||||||
inc(s.pos, bufLen)
|
setLen(s.data, s.pos + bufLen)
|
||||||
|
copyMem(addr(s.data[s.pos]), buffer, bufLen)
|
||||||
|
inc(s.pos, bufLen)
|
||||||
|
|
||||||
proc ssClose(s: Stream) =
|
proc ssClose(s: Stream) =
|
||||||
var s = StringStream(s)
|
var s = StringStream(s)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue