summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2025-09-08 16:28:45 +0200
committerPeter Zhu <peter@peterzhu.ca>2025-09-17 09:25:17 -0400
commit3f3497558146c46350b740db2e71fdf28d30c204 (patch)
treeb6d02dd4c41d31ce5585ea80218c133868a74c62 /string.c
parent42b6ec0149fbf97d79ddd4d957cecc0fc08f2701 (diff)
Clear out memory for newly alloated string
Diffstat (limited to 'string.c')
-rw-r--r--string.c11
1 files changed, 11 insertions, 0 deletions
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;
}