streams.ssWriteData: calling setLen only when new data truely increases the underlying string buffer

This commit is contained in:
Archs
2015-03-01 00:33:40 +08:00
parent 549920a85f
commit f9b2f9565c

View File

@@ -224,10 +224,12 @@ proc ssReadData(s: Stream, buffer: pointer, bufLen: int): int =
proc ssWriteData(s: Stream, buffer: pointer, bufLen: int) =
var s = StringStream(s)
if bufLen > 0:
if bufLen <= 0:
return
if s.pos + bufLen > s.data.len():
setLen(s.data, s.data.len + bufLen)
copyMem(addr(s.data[s.pos]), buffer, bufLen)
inc(s.pos, bufLen)
copyMem(addr(s.data[s.pos]), buffer, bufLen)
inc(s.pos, bufLen)
proc ssClose(s: Stream) =
var s = StringStream(s)