osproc: fixes a memory leak affecting Windows
This commit is contained in:
parent
0314075639
commit
4b350d2632
1 changed files with 7 additions and 7 deletions
|
|
@ -410,13 +410,11 @@ when defined(Windows) and not defined(useNimRtl):
|
||||||
result.readDataImpl = hsReadData
|
result.readDataImpl = hsReadData
|
||||||
result.writeDataImpl = hsWriteData
|
result.writeDataImpl = hsWriteData
|
||||||
|
|
||||||
proc buildCommandLine(a: string, args: openArray[string]): cstring =
|
proc buildCommandLine(a: string, args: openArray[string]): string =
|
||||||
var res = quoteShell(a)
|
result = quoteShell(a)
|
||||||
for i in 0..high(args):
|
for i in 0..high(args):
|
||||||
res.add(' ')
|
result.add(' ')
|
||||||
res.add(quoteShell(args[i]))
|
result.add(quoteShell(args[i]))
|
||||||
result = cast[cstring](alloc0(res.len+1))
|
|
||||||
copyMem(result, cstring(res), res.len)
|
|
||||||
|
|
||||||
proc buildEnv(env: StringTableRef): tuple[str: cstring, len: int] =
|
proc buildEnv(env: StringTableRef): tuple[str: cstring, len: int] =
|
||||||
var L = 0
|
var L = 0
|
||||||
|
|
@ -540,11 +538,13 @@ when defined(Windows) and not defined(useNimRtl):
|
||||||
result.errHandle = FileHandle(si.hStdError)
|
result.errHandle = FileHandle(si.hStdError)
|
||||||
|
|
||||||
var cmdl: cstring
|
var cmdl: cstring
|
||||||
|
var cmdRoot: string
|
||||||
if poEvalCommand in options:
|
if poEvalCommand in options:
|
||||||
cmdl = command
|
cmdl = command
|
||||||
assert args.len == 0
|
assert args.len == 0
|
||||||
else:
|
else:
|
||||||
cmdl = buildCommandLine(command, args)
|
cmdRoot = buildCommandLine(command, args)
|
||||||
|
cmdl = cstring(cmdRoot)
|
||||||
var wd: cstring = nil
|
var wd: cstring = nil
|
||||||
var e = (str: nil.cstring, len: -1)
|
var e = (str: nil.cstring, len: -1)
|
||||||
if len(workingDir) > 0: wd = workingDir
|
if len(workingDir) > 0: wd = workingDir
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue