mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-01 17:41:17 +00:00
Fixes #7877
This commit is contained in:
@@ -88,16 +88,18 @@ proc readData*(s: Stream, buffer: pointer, bufLen: int): int =
|
||||
|
||||
proc readAll*(s: Stream): string =
|
||||
## Reads all available data.
|
||||
const bufferSize = 1000
|
||||
const bufferSize = 1024
|
||||
result = newString(bufferSize)
|
||||
var r = 0
|
||||
var buffer {.noinit.}: array[bufferSize, char]
|
||||
while true:
|
||||
let readBytes = readData(s, addr(result[r]), bufferSize)
|
||||
if readBytes < bufferSize:
|
||||
setLen(result, r+readBytes)
|
||||
let readBytes = readData(s, addr(buffer[0]), bufferSize)
|
||||
if readBytes == 0:
|
||||
break
|
||||
let prevLen = result.len
|
||||
result.setLen(prevLen + readBytes)
|
||||
copyMem(addr(result[prevLen]), addr(buffer[0]), readBytes)
|
||||
if readBytes < bufferSize:
|
||||
break
|
||||
inc r, bufferSize
|
||||
setLen(result, r+bufferSize)
|
||||
|
||||
proc peekData*(s: Stream, buffer: pointer, bufLen: int): int =
|
||||
## low level proc that reads data into an untyped `buffer` of `bufLen` size
|
||||
|
||||
Reference in New Issue
Block a user