summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/streams.nim2
-rw-r--r--tests/stdlib/tstreams.nim2
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/pure/streams.nim b/lib/pure/streams.nim
index 7ad81685f..84451f989 100644
--- a/lib/pure/streams.nim
+++ b/lib/pure/streams.nim
@@ -1274,6 +1274,8 @@ else: # after 1.3 or JS not defined
 
     new(result)
     result.data = s
+    when defined(gcOrc) or defined(gcArc):
+      prepareMutation(result.data) # Allows us to mutate using `addr` logic like `copyMem`, otherwise it errors.
     result.pos = 0
     result.closeImpl = ssClose
     result.atEndImpl = ssAtEnd
diff --git a/tests/stdlib/tstreams.nim b/tests/stdlib/tstreams.nim
index c2ceed624..d70d4995a 100644
--- a/tests/stdlib/tstreams.nim
+++ b/tests/stdlib/tstreams.nim
@@ -74,3 +74,5 @@ block:
   doAssert(ss.peekLine(str))
   doAssert(str == "uick brown fox jumped over the lazy dog.")
   doAssert(ss.getPosition == 5) # haven't moved
+  ss.setPosition(0) # Ensure we dont error with writing over literals on arc/orc #19707
+  ss.write("hello")