Skip to content

Commit

Permalink
fix nim-lang#9634: debugging a program using execCmdEx now works
Browse files Browse the repository at this point in the history
  • Loading branch information
timotheecour committed Apr 7, 2019
1 parent 28a83a8 commit f2cfd0b
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 @@ -126,6 +126,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 @@ -143,8 +144,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 = c_fread(buffer, 1, len, f)
if result != len: checkErr(f)
while true:
result = c_fread(buffer, 1, len, f)
if result == len: return result
when not defined(NimScript):
if errno == EINTR:
errno = 0
c_clearerr(f)
doAssert result == 0 # TODO: do 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 f2cfd0b

Please sign in to comment.