summary refs log tree commit diff stats
path: root/lib/system.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system.nim')
-rw-r--r--lib/system.nim9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/system.nim b/lib/system.nim
index 014538098..0bc0a0dbf 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -2425,6 +2425,14 @@ proc collectionToString[T](x: T, prefix, separator, suffix: string): string =
         result.add "nil"
       else:
         result.add($value)
+    # prevent temporary string allocation
+    elif compiles(result.add(value)):
+      # don't insert '\0' characters into the result string
+      when value is char:
+        if value != '\0':
+          result.add(value)
+      else:
+        result.add(value)
     else:
       result.add($value)
 
@@ -3307,7 +3315,6 @@ proc `$`*[T, IDX](x: array[IDX, T]): string =
   ## generic ``$`` operator for arrays that is lifted from the components
   collectionToString(x, "[", ", ", "]")
 
-
 proc quit*(errormsg: string, errorcode = QuitFailure) {.noReturn.} =
   ## a shorthand for ``echo(errormsg); quit(errorcode)``.
   echo(errormsg)