From 3f3497558146c46350b740db2e71fdf28d30c204 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Mon, 8 Sep 2025 16:28:45 +0200 Subject: Clear out memory for newly alloated string --- string.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'string.c') diff --git a/string.c b/string.c index 834641cfdb..807d86f04d 100644 --- a/string.c +++ b/string.c @@ -1006,6 +1006,8 @@ str_alloc_embed(VALUE klass, size_t capa) NEWOBJ_OF(str, struct RString, klass, T_STRING | (RGENGC_WB_PROTECTED_STRING ? FL_WB_PROTECTED : 0), size, 0); + str->len = 0; + return (VALUE)str; } @@ -1015,6 +1017,10 @@ str_alloc_heap(VALUE klass) NEWOBJ_OF(str, struct RString, klass, T_STRING | STR_NOEMBED | (RGENGC_WB_PROTECTED_STRING ? FL_WB_PROTECTED : 0), sizeof(struct RString), 0); + str->len = 0; + str->as.heap.aux.capa = 0; + str->as.heap.ptr = NULL; + return (VALUE)str; } @@ -1866,6 +1872,8 @@ ec_str_alloc_embed(struct rb_execution_context_struct *ec, VALUE klass, size_t c NEWOBJ_OF(str, struct RString, klass, T_STRING | (RGENGC_WB_PROTECTED_STRING ? FL_WB_PROTECTED : 0), size, ec); + str->len = 0; + return (VALUE)str; } @@ -1875,6 +1883,9 @@ ec_str_alloc_heap(struct rb_execution_context_struct *ec, VALUE klass) NEWOBJ_OF(str, struct RString, klass, T_STRING | STR_NOEMBED | (RGENGC_WB_PROTECTED_STRING ? FL_WB_PROTECTED : 0), sizeof(struct RString), ec); + str->as.heap.aux.capa = 0; + str->as.heap.ptr = NULL; + return (VALUE)str; } -- cgit v1.2.3