From 6908fb4011945d746b80b4da9975e065fd32989e Mon Sep 17 00:00:00 2001 From: c-blake Date: Wed, 4 Sep 2024 05:01:55 -0400 Subject: [PATCH] Make `$` on 0-length `MemSlice` produce Nim "" as per DMisener idea (#24015) in https://forum.nim-lang.org/t/12463 which seems reasonable enough to me. stdlib has several dozens of places doing result.setLen now, but if `experimental:strictDefs` move sot on by default and there is no easy way to locally suppress the warning we can revisit this. --- lib/pure/memfiles.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pure/memfiles.nim b/lib/pure/memfiles.nim index b10f7ad916..8eec551c4e 100644 --- a/lib/pure/memfiles.nim +++ b/lib/pure/memfiles.nim @@ -412,7 +412,7 @@ proc `==`*(x, y: MemSlice): bool = proc `$`*(ms: MemSlice): string {.inline.} = ## Return a Nim string built from a MemSlice. result.setLen(ms.size) - copyMem(addr(result[0]), ms.data, ms.size) + copyMem(result.cstring, ms.data, ms.size) iterator memSlices*(mfile: MemFile, delim = '\l', eat = '\r'): MemSlice {.inline.} = ## Iterates over \[optional `eat`] `delim`-delimited slices in MemFile `mfile`.