check waitpid() return value before setting exitStatus

This fixes a race with parallelBuild on DragonFly BSD.
This commit is contained in:
Johannes Hofmann 2016-12-02 22:24:42 +01:00
commit b453a8e616

View file

@ -965,7 +965,7 @@ elif not defined(useNimRtl):
var ret : int var ret : int
var status : cint = 1 var status : cint = 1
ret = waitpid(p.id, status, WNOHANG) ret = waitpid(p.id, status, WNOHANG)
if WIFEXITED(status): if ret == int(p.id) and WIFEXITED(status):
p.exitStatus = status p.exitStatus = status
if ret == 0: return true # Can't establish status. Assume running. if ret == 0: return true # Can't establish status. Assume running.
result = ret == int(p.id) result = ret == int(p.id)