ref: 547876db1cb424ef4cbc2890eabbe34157cfa079
parent: 643c3041254022f8d5af684c9e6deaf9cbeed759
author: jniewerth <[email protected]>
date: Sun Aug 20 09:30:03 EDT 2017
Fix "use-after-relocate" in stream_to_string cvalue_string() can cause a gc - this potentially makes the ios_t-pointer that is cached in the local variable "st" invalid.
--- a/iostream.c
+++ b/iostream.c
@@ -389,7 +389,7 @@
n = st->size;
str = cvalue_string(n);
memcpy(cvalue_data(str), value2c(ios_t*,*ps)->buf, n);
- ios_trunc(st, 0);
+ ios_trunc(value2c(ios_t*,*ps), 0);
}
else {
char *b = ios_takebuf(st, &n); n--;