Fixes #3752.
This commit is contained in:
parent
3b732259c0
commit
a70e6b3fde
2 changed files with 5 additions and 0 deletions
|
|
@ -2774,6 +2774,9 @@ when not defined(JS): #and not defined(nimscript):
|
||||||
## reads `len` bytes into the buffer `a` starting at ``a[start]``. Returns
|
## reads `len` bytes into the buffer `a` starting at ``a[start]``. Returns
|
||||||
## the actual number of bytes that have been read which may be less than
|
## the actual number of bytes that have been read which may be less than
|
||||||
## `len` (if not as many bytes are remaining), but not greater.
|
## `len` (if not as many bytes are remaining), but not greater.
|
||||||
|
##
|
||||||
|
## **Warning:** The buffer `a` must be pre-allocated. This can be done
|
||||||
|
## using, for example, ``newString``.
|
||||||
|
|
||||||
proc readBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
proc readBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
||||||
tags: [ReadIOEffect], benign.}
|
tags: [ReadIOEffect], benign.}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,8 @@ proc readBytes(f: File, a: var openArray[int8|uint8], start, len: Natural): int
|
||||||
result = readBuffer(f, addr(a[start]), len)
|
result = readBuffer(f, addr(a[start]), len)
|
||||||
|
|
||||||
proc readChars(f: File, a: var openArray[char], start, len: Natural): int =
|
proc readChars(f: File, a: var openArray[char], start, len: Natural): int =
|
||||||
|
if (start + len) > len(a):
|
||||||
|
raiseEIO("buffer overflow: (start+len) > length of openarray buffer")
|
||||||
result = readBuffer(f, addr(a[start]), len)
|
result = readBuffer(f, addr(a[start]), len)
|
||||||
|
|
||||||
proc write(f: File, c: cstring) = fputs(c, f)
|
proc write(f: File, c: cstring) = fputs(c, f)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue