diff options
| author | Satoshi Tagomori <s-tagomori@sakura.ad.jp> | 2025-10-25 13:36:20 +0900 |
|---|---|---|
| committer | Satoshi Tagomori <tagomoris@gmail.com> | 2025-10-26 17:49:39 +0900 |
| commit | f53b8194cd5958619dc295e51dbdec29351a6b0a (patch) | |
| tree | 0fa448f6efc61d8592a6824b4ab0c513f4262331 /internal | |
| parent | 1c81bbf03533eb44f3c8f25a872ec85b6563c65f (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.h | 2 |
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); |
