One more attempt to fix #4867
This commit is contained in:
parent
d60448fa69
commit
0c69891b8d
2 changed files with 19 additions and 1 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
16
tests/osproc/tworkingdir.nim
Normal file
16
tests/osproc/tworkingdir.nim
Normal 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)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue