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 422da6c
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 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,16 @@ 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)
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 422da6c

Please sign in to comment.