mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
[Orc] fixes "streams.readDataStr segafaults" when accepting a string literal (#20019) [backport]
fixes streams.readDataStr accept a string literal
(cherry picked from commit 286fcef68e)
This commit is contained in:
@@ -1194,6 +1194,11 @@ else: # after 1.3 or JS not defined
|
||||
|
||||
proc ssReadDataStr(s: Stream, buffer: var string, slice: Slice[int]): int =
|
||||
var s = StringStream(s)
|
||||
when nimvm:
|
||||
discard
|
||||
else:
|
||||
when declared(prepareMutation):
|
||||
prepareMutation(buffer) # buffer might potentially be a CoW literal with ARC
|
||||
result = min(slice.b + 1 - slice.a, s.data.len - s.pos)
|
||||
if result > 0:
|
||||
jsOrVmBlock:
|
||||
|
||||
@@ -85,3 +85,13 @@ block:
|
||||
static: # Ensure streams it doesnt break with nimscript on arc/orc #19716
|
||||
let s = newStringStream("a")
|
||||
doAssert s.data == "a"
|
||||
|
||||
template main =
|
||||
var strm = newStringStream("abcde")
|
||||
var buffer = "12345"
|
||||
doAssert strm.readDataStr(buffer, 0..3) == 4
|
||||
doAssert buffer == "abcd5"
|
||||
strm.close()
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user