зеркало из https://github.com/github/ruby.git
Use RCLASS_EXT macro instead of directly accessing ptr
This commit is contained in:
Родитель
e0f999a2ed
Коммит
e3ef21c307
10
gc.c
10
gc.c
|
@ -2847,9 +2847,9 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
|
||||||
}
|
}
|
||||||
rb_class_remove_from_module_subclasses(obj);
|
rb_class_remove_from_module_subclasses(obj);
|
||||||
rb_class_remove_from_super_subclasses(obj);
|
rb_class_remove_from_super_subclasses(obj);
|
||||||
if (RANY(obj)->as.klass.ptr)
|
if (RCLASS_EXT(obj))
|
||||||
xfree(RANY(obj)->as.klass.ptr);
|
xfree(RCLASS_EXT(obj));
|
||||||
RANY(obj)->as.klass.ptr = NULL;
|
RCLASS_EXT(obj) = NULL;
|
||||||
|
|
||||||
(void)RB_DEBUG_COUNTER_INC_IF(obj_module_ptr, BUILTIN_TYPE(obj) == T_MODULE);
|
(void)RB_DEBUG_COUNTER_INC_IF(obj_module_ptr, BUILTIN_TYPE(obj) == T_MODULE);
|
||||||
(void)RB_DEBUG_COUNTER_INC_IF(obj_class_ptr, BUILTIN_TYPE(obj) == T_CLASS);
|
(void)RB_DEBUG_COUNTER_INC_IF(obj_class_ptr, BUILTIN_TYPE(obj) == T_CLASS);
|
||||||
|
@ -3015,8 +3015,8 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
|
||||||
cc_table_free(objspace, obj, FALSE);
|
cc_table_free(objspace, obj, FALSE);
|
||||||
rb_class_remove_from_module_subclasses(obj);
|
rb_class_remove_from_module_subclasses(obj);
|
||||||
rb_class_remove_from_super_subclasses(obj);
|
rb_class_remove_from_super_subclasses(obj);
|
||||||
xfree(RANY(obj)->as.klass.ptr);
|
xfree(RCLASS_EXT(obj));
|
||||||
RANY(obj)->as.klass.ptr = NULL;
|
RCLASS_EXT(obj) = NULL;
|
||||||
|
|
||||||
RB_DEBUG_COUNTER_INC(obj_iclass_ptr);
|
RB_DEBUG_COUNTER_INC(obj_iclass_ptr);
|
||||||
break;
|
break;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче