Skip to content

Commit

Permalink
fix #9634 debugging a program using execCmdEx now works
Browse files Browse the repository at this point in the history
  • Loading branch information
timotheecour committed Jan 22, 2020
1 parent 2fad7f1 commit c0f5305
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions lib/system/io.nim
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ proc strerror(errnum: cint): cstring {.importc, header: "<string.h>".}
when not defined(NimScript):
var
errno {.importc, header: "<errno.h>".}: cint ## error variable
EINTR {.importc: "EINTR", header: "<errno.h>".}: cint

proc checkErr(f: File) =
when not defined(NimScript):
Expand All @@ -158,8 +159,17 @@ proc readBuffer*(f: File, buffer: pointer, len: Natural): int {.
## reads `len` bytes into the buffer pointed to by `buffer`. Returns
## 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.
result = cast[int](c_fread(buffer, 1, cast[csize_t](len), f))
if result != len: checkErr(f)
while true:
result = cast[int](c_fread(buffer, 1, cast[csize_t](len), f))
if result == len: return result
when not defined(NimScript):
if errno == EINTR:
errno = 0
c_clearerr(f)
doAssert result == 0 # check whether we need to handle result > 0 (ie short read)
continue
checkErr(f)
break

proc readBytes*(f: File, a: var openArray[int8|uint8], start, len: Natural): int {.
tags: [ReadIOEffect], benign.} =
Expand Down

0 comments on commit c0f5305

Please sign in to comment.