Merge pull request #4918 from cheatfate/macosprocworkdir

One more attempt to fix #4867
This commit is contained in:
Andreas Rumpf 2016-10-21 11:33:01 +02:00 • committed by GitHub
commit df6aeb573a
2 changed files with 19 additions and 1 deletions

View file

@ -774,7 +774,10 @@ elif not defined(useNimRtl):
data.workingDir = workingDir data.workingDir = workingDir
when useProcessAuxSpawn: when useProcessAuxSpawn:
var currentDir = getCurrentDir()
pid = startProcessAuxSpawn(data) pid = startProcessAuxSpawn(data)
if workingDir.len > 0:
setCurrentDir(currentDir)
else: else:
pid = startProcessAuxFork(data) pid = startProcessAuxFork(data)
@ -835,7 +838,6 @@ elif not defined(useNimRtl):
chck posix_spawn_file_actions_adddup2(fops, data.pStderr[writeIdx], 2) chck posix_spawn_file_actions_adddup2(fops, data.pStderr[writeIdx], 2)
var res: cint var res: cint
# FIXME: chdir is global to process
if data.workingDir.len > 0: if data.workingDir.len > 0:
setCurrentDir($data.workingDir) setCurrentDir($data.workingDir)
var pid: Pid var pid: Pid

View file

@ -0,0 +1,16 @@
discard """
file: "tworkingdir.nim"
output: ""
"""
import osproc, os
when defined(windows):
# Windows don't have this issue, so we won't test it.
discard
else:
let dir1 = getCurrentDir()
var process = startProcess("/usr/bin/env", "/usr/bin", ["true"])
let dir2 = getCurrentDir()
discard process.waitForExit()
process.close()
doAssert(dir1 == dir2, $dir1 & " != " & $dir2)