Fix posix_spawn error handling (#5826)

posix_spawn doesn't set errno - it returns the error code.
This commit is contained in:
Ruslan Mustakov
2017-05-18 03:40:55 +07:00
committed by Andreas Rumpf
parent 8f67b90997
commit 0a76387ba4

View File

@@ -863,18 +863,15 @@ elif not defined(useNimRtl):
if data.workingDir.len > 0:
setCurrentDir($data.workingDir)
var pid: Pid
var err: OSErrorCode
if data.optionPoUsePath:
res = posix_spawnp(pid, data.sysCommand, fops, attr, data.sysArgs, data.sysEnv)
if res != 0'i32: err = osLastError()
else:
res = posix_spawn(pid, data.sysCommand, fops, attr, data.sysArgs, data.sysEnv)
if res != 0'i32: err = osLastError()
discard posix_spawn_file_actions_destroy(fops)
discard posix_spawnattr_destroy(attr)
if res != 0'i32: raiseOSError(err)
if res != 0'i32: raiseOSError(OSErrorCode(res))
return pid
else: