mirror of
https://github.com/ruby/ruby.git
synced 2025-09-18 01:54:00 +02:00
* variable.c (rb_generic_ivar_memsize): should not remove generic
instance variable table. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c38487d063
commit
ea850e3030
3 changed files with 12 additions and 7 deletions
10
variable.c
10
variable.c
|
@ -908,10 +908,10 @@ rb_mark_generic_ivar_tbl(void)
|
|||
void
|
||||
rb_free_generic_ivar(VALUE obj)
|
||||
{
|
||||
st_data_t tbl;
|
||||
st_data_t key = (st_data_t)obj, tbl;
|
||||
|
||||
if (!generic_iv_tbl) return;
|
||||
if (st_delete(generic_iv_tbl, &obj, &tbl))
|
||||
if (st_delete(generic_iv_tbl, &key, &tbl))
|
||||
st_free_table((st_table *)tbl);
|
||||
}
|
||||
|
||||
|
@ -919,8 +919,8 @@ size_t
|
|||
rb_generic_ivar_memsize(VALUE obj)
|
||||
{
|
||||
st_data_t tbl;
|
||||
if (st_delete(generic_iv_tbl, &obj, &tbl))
|
||||
return st_memsize((st_table *)tbl);
|
||||
if (st_lookup(generic_iv_tbl, (st_data_t)obj, &tbl))
|
||||
return st_memsize((st_table *)tbl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -931,7 +931,7 @@ rb_copy_generic_ivar(VALUE clone, VALUE obj)
|
|||
|
||||
if (!generic_iv_tbl) return;
|
||||
if (!FL_TEST(obj, FL_EXIVAR)) {
|
||||
clear:
|
||||
clear:
|
||||
if (FL_TEST(clone, FL_EXIVAR)) {
|
||||
rb_free_generic_ivar(clone);
|
||||
FL_UNSET(clone, FL_EXIVAR);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue