shithub: femtolisp

Download patch

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--;