diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-12-06 15:05:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-06 15:05:37 +0100 |
commit | 57c4e78bccfb60b584259e8daa9e4025116fd28c (patch) | |
tree | 371001dde6abcca2c3b6433ad789bc54aac13043 /lib | |
parent | e53e7d9688547893e7de67f1dbc830bef5cac2df (diff) | |
parent | 95188edf6fe63ee3fe8341b1b5c2e7b92beb3415 (diff) | |
download | Nim-57c4e78bccfb60b584259e8daa9e4025116fd28c.tar.gz |
Merge pull request #5088 from jfhg/posix_running
check waitpid() return value before setting exitStatus
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/osproc.nim | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim index 76bd2dfe1..1d43bb321 100644 --- a/lib/pure/osproc.nim +++ b/lib/pure/osproc.nim @@ -965,10 +965,16 @@ elif not defined(useNimRtl): var ret : int var status : cint = 1 ret = waitpid(p.id, status, WNOHANG) - if WIFEXITED(status): - p.exitStatus = status - if ret == 0: return true # Can't establish status. Assume running. - result = ret == int(p.id) + if ret == int(p.id): + if WIFEXITED(status): + p.exitStatus = status + return false + else: + return true + elif ret == 0: + return true # Can't establish status. Assume running. + else: + return false proc terminate(p: Process) = if kill(p.id, SIGTERM) != 0'i32: |