summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorSatoshi Tagomori <s-tagomori@sakura.ad.jp>2025-10-25 13:36:20 +0900
committerSatoshi Tagomori <tagomoris@gmail.com>2025-10-26 17:49:39 +0900
commitf53b8194cd5958619dc295e51dbdec29351a6b0a (patch)
tree0fa448f6efc61d8592a6824b4ab0c513f4262331 /internal
parent1c81bbf03533eb44f3c8f25a872ec85b6563c65f (diff)
Stop deleting the reference from superclass when replacing classext.
Calling the usual rb_iclass_classext_free() causes SEGV because duplicating a newer classext of iclass had set the reference from superclass to the newer classext, but calling rb_iclass_classext_free() deletes it.
Diffstat (limited to 'internal')
-rw-r--r--internal/class.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/internal/class.h b/internal/class.h
index 5d843e58da..138620dd6f 100644
--- a/internal/class.h
+++ b/internal/class.h
@@ -490,7 +490,7 @@ void rb_class_classext_foreach(VALUE klass, rb_class_classext_foreach_callback_f
void rb_class_subclass_add(VALUE super, VALUE klass);
void rb_class_remove_from_super_subclasses(VALUE);
void rb_class_remove_from_module_subclasses(VALUE);
-void rb_class_classext_free_subclasses(rb_classext_t *, VALUE);
+void rb_class_classext_free_subclasses(rb_classext_t *, VALUE, bool);
void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
void rb_class_detach_subclasses(VALUE);
void rb_class_detach_module_subclasses(VALUE);