зеркало из https://github.com/github/ruby.git
Add rb_hash_free for the GC to use
This commit is contained in:
Родитель
36cdf163df
Коммит
f43dac0df2
7
gc.c
7
gc.c
|
@ -3539,12 +3539,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (RHASH_ST_TABLE_P(obj)) {
|
||||
st_table *tab = RHASH_ST_TABLE(obj);
|
||||
|
||||
free(tab->bins);
|
||||
free(tab->entries);
|
||||
}
|
||||
rb_hash_free(obj);
|
||||
break;
|
||||
case T_REGEXP:
|
||||
if (RANY(obj)->as.regexp.ptr) {
|
||||
|
|
8
hash.c
8
hash.c
|
@ -1178,6 +1178,14 @@ hash_st_free_and_clear_table(VALUE hash)
|
|||
RHASH_ST_CLEAR(hash);
|
||||
}
|
||||
|
||||
void
|
||||
rb_hash_free(VALUE hash)
|
||||
{
|
||||
if (RHASH_ST_TABLE_P(hash)) {
|
||||
hash_st_free(hash);
|
||||
}
|
||||
}
|
||||
|
||||
typedef int st_foreach_func(st_data_t, st_data_t, st_data_t);
|
||||
|
||||
struct foreach_safe_arg {
|
||||
|
|
|
@ -87,6 +87,7 @@ int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
|
|||
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
|
||||
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
|
||||
VALUE rb_ident_hash_new_with_size(st_index_t size);
|
||||
void rb_hash_free(VALUE hash);
|
||||
|
||||
static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
|
||||
static inline VALUE RHASH_IFNONE(VALUE h);
|
||||
|
|
Загрузка…
Ссылка в новой задаче