summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2025-10-17 21:41:12 -0400
committerPeter Zhu <peter@peterzhu.ca>2025-10-18 10:40:43 -0400
commiteb4a6f0cda35e9f7dc926d5cf66efdfaf3136ac3 (patch)
tree58a30a608ccd51c728a62854a6171429f0e5733f
parentd7f412e685aee3138213734ad81ffd5fe0e4be8c (diff)
Fix memory leak of TypedData data in Namespace
-rw-r--r--namespace.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/namespace.c b/namespace.c
index bd805ae0d3..e860de20ef 100644
--- a/namespace.c
+++ b/namespace.c
@@ -208,7 +208,7 @@ free_loading_table_entry(st_data_t key, st_data_t value, st_data_t arg)
}
static void
-namespace_entry_free(void *ptr)
+namespace_root_free(void *ptr)
{
rb_namespace_t *ns = (rb_namespace_t *)ptr;
if (ns->loading_table) {
@@ -218,6 +218,13 @@ namespace_entry_free(void *ptr)
}
}
+static void
+namespace_entry_free(void *ptr)
+{
+ namespace_root_free(ptr);
+ xfree(ptr);
+}
+
static size_t
namespace_entry_memsize(const void *ptr)
{
@@ -242,7 +249,7 @@ const rb_data_type_t rb_root_namespace_data_type = {
"Namespace::Root",
{
rb_namespace_entry_mark,
- namespace_entry_free,
+ namespace_root_free,
namespace_entry_memsize,
rb_namespace_gc_update_references,
},