Uses swap() to avoid variable copies. Refs #1048.
This commit is contained in:
parent
d41988d8b2
commit
a6f8bae69f
1 changed files with 4 additions and 4 deletions
|
|
@ -287,10 +287,10 @@ proc uncompress*(sourceBuf: cstring, sourceLen: int): string =
|
||||||
# Verify that the input is a valid gzip stream.
|
# Verify that the input is a valid gzip stream.
|
||||||
if status != Z_STREAM_END:
|
if status != Z_STREAM_END:
|
||||||
# Incomplete gzip stream.
|
# Incomplete gzip stream.
|
||||||
return nil
|
return
|
||||||
|
|
||||||
decompressed.setLen(have)
|
decompressed.setLen(have)
|
||||||
result = decompressed
|
swap(result, decompressed)
|
||||||
|
|
||||||
|
|
||||||
proc inflate*(buffer: var string): bool {.discardable.} =
|
proc inflate*(buffer: var string): bool {.discardable.} =
|
||||||
|
|
@ -303,7 +303,7 @@ proc inflate*(buffer: var string): bool {.discardable.} =
|
||||||
## Returns true if `buffer` was successfully inflated.
|
## Returns true if `buffer` was successfully inflated.
|
||||||
assert (not buffer.isNil)
|
assert (not buffer.isNil)
|
||||||
if buffer.len < 1: return
|
if buffer.len < 1: return
|
||||||
let temp = uncompress(addr(buffer[0]), buffer.len)
|
var temp = uncompress(addr(buffer[0]), buffer.len)
|
||||||
if not temp.isNil:
|
if not temp.isNil:
|
||||||
buffer = temp
|
swap(buffer, temp)
|
||||||
result = true
|
result = true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue