summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-11-05 09:04:16 +0100
committerAndreas Rumpf <rumpf_a@web.de>2016-11-05 09:04:16 +0100
commit0a6787f956c294721839484f02bd4a64af92d8fd (patch)
tree0542caf6662df4888795539779e3a3314f1d4347
parent33ebf3e5fb05f45abadeff4747ab0e3031f75dd0 (diff)
downloadNim-0a6787f956c294721839484f02bd4a64af92d8fd.tar.gz
better error handling for osproc.nim
-rw-r--r--lib/pure/osproc.nim6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index 44ec5b548..76bd2dfe1 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -841,15 +841,19 @@ 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)
-      chck res
+      if res != 0'i32: raiseOSError(err)
+
       return pid
   else:
     proc startProcessAuxFork(data: StartProcessData): Pid =