Fixes #7877
This commit is contained in:
parent
e206a8d952
commit
605b65487f
1 changed files with 9 additions and 7 deletions
|
|
@ -88,16 +88,18 @@ proc readData*(s: Stream, buffer: pointer, bufLen: int): int =
|
||||||
|
|
||||||
proc readAll*(s: Stream): string =
|
proc readAll*(s: Stream): string =
|
||||||
## Reads all available data.
|
## Reads all available data.
|
||||||
const bufferSize = 1000
|
const bufferSize = 1024
|
||||||
result = newString(bufferSize)
|
result = newString(bufferSize)
|
||||||
var r = 0
|
var buffer {.noinit.}: array[bufferSize, char]
|
||||||
while true:
|
while true:
|
||||||
let readBytes = readData(s, addr(result[r]), bufferSize)
|
let readBytes = readData(s, addr(buffer[0]), bufferSize)
|
||||||
if readBytes < bufferSize:
|
if readBytes == 0:
|
||||||
setLen(result, r+readBytes)
|
break
|
||||||
|
let prevLen = result.len
|
||||||
|
result.setLen(prevLen + readBytes)
|
||||||
|
copyMem(addr(result[prevLen]), addr(buffer[0]), readBytes)
|
||||||
|
if readBytes < bufferSize:
|
||||||
break
|
break
|
||||||
inc r, bufferSize
|
|
||||||
setLen(result, r+bufferSize)
|
|
||||||
|
|
||||||
proc peekData*(s: Stream, buffer: pointer, bufLen: int): int =
|
proc peekData*(s: Stream, buffer: pointer, bufLen: int): int =
|
||||||
## low level proc that reads data into an untyped `buffer` of `bufLen` size
|
## low level proc that reads data into an untyped `buffer` of `bufLen` size
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue