summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-04-06 19:13:10 +0200
committerAraq <rumpf_a@web.de>2019-04-06 19:13:10 +0200
commit9f5d9d19937a321cb7a9cec06a0a14ea07627f3d (patch)
treed0a5ffbfa34055225ecd9ebd9666c37a20d8c749 /lib/pure
parentf1ee36692ace1f95ebce67c2b72b60e838946837 (diff)
downloadNim-9f5d9d19937a321cb7a9cec06a0a14ea07627f3d.tar.gz
makes koch.nim sem'check with --newruntime
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/osproc.nim14
-rw-r--r--lib/pure/strtabs.nim2
2 files changed, 11 insertions, 5 deletions
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index 88df65aa9..0cdc3583d 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -57,8 +57,8 @@ type
       id: Handle
     else:
       inHandle, outHandle, errHandle: FileHandle
-      inStream, outStream, errStream: Stream
       id: Pid
+    inStream, outStream, errStream: owned(Stream)
     exitStatus: cint
     exitFlag: bool
     options: set[ProcessOption]
@@ -724,15 +724,21 @@ when defined(Windows) and not defined(useNimRtl):
 
   proc inputStream(p: Process): Stream =
     streamAccess(p)
-    result = newFileHandleStream(p.inHandle)
+    if p.inStream == nil:
+      p.inStream = newFileHandleStream(p.inHandle)
+    result = p.inStream
 
   proc outputStream(p: Process): Stream =
     streamAccess(p)
-    result = newFileHandleStream(p.outHandle)
+    if p.outStream == nil:
+      p.outStream = newFileHandleStream(p.outHandle)
+    result = p.outStream
 
   proc errorStream(p: Process): Stream =
     streamAccess(p)
-    result = newFileHandleStream(p.errHandle)
+    if p.errStream == nil:
+      p.errStream = newFileHandleStream(p.errHandle)
+    result = p.errStream
 
   proc execCmd(command: string): int =
     var
diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim
index 269fe11f7..0726eb15d 100644
--- a/lib/pure/strtabs.nim
+++ b/lib/pure/strtabs.nim
@@ -276,7 +276,7 @@ proc newStringTable*(keyValuePairs: varargs[string],
     inc(i, 2)
 
 proc newStringTable*(keyValuePairs: varargs[tuple[key, val: string]],
-                     mode: StringTableMode = modeCaseSensitive): StringTableRef {.
+                     mode: StringTableMode = modeCaseSensitive): owned(StringTableRef) {.
   rtlFunc, extern: "nst$1WithTableConstr".} =
   ## Creates a new string table with given `(key, value)` tuple pairs.
   ##