diff options
author | ktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-08-17 10:51:33 +0000 |
---|---|---|
committer | ktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-08-17 10:51:33 +0000 |
commit | 6bce41b3b745ab18439df4588b404d7e64e3293b (patch) | |
tree | 2402b4eeecd2d096f50b87fb40dfb707e9e3108e /gc.c | |
parent | b62ce0e964b9b35738a5c4620cb749466131b8de (diff) | |
download | ruby-6bce41b3b745ab18439df4588b404d7e64e3293b.tar.gz |
* gc.c (obj_memsize_of): don't calculate memsize of T_NODE
when called from check_gen_consistency. It fixes segmentation
fault on RGENGC_CHECK_MODE >= 1 introduced by r47188.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -690,7 +690,7 @@ static void gc_mark(rb_objspace_t *objspace, VALUE ptr); static void gc_mark_maybe(rb_objspace_t *objspace, VALUE ptr); static void gc_mark_children(rb_objspace_t *objspace, VALUE ptr); -static size_t obj_memsize_of(VALUE obj, int use_tdata); +static size_t obj_memsize_of(VALUE obj, int use_all_types); static VALUE gc_verify_internal_consistency(VALUE self); static double getrusage_time(void); @@ -2497,7 +2497,7 @@ size_t rb_generic_ivar_memsize(VALUE); #include "regint.h" static size_t -obj_memsize_of(VALUE obj, int use_tdata) +obj_memsize_of(VALUE obj, int use_all_types) { size_t size = 0; @@ -2557,7 +2557,7 @@ obj_memsize_of(VALUE obj, int use_tdata) } break; case T_DATA: - if (use_tdata) size += rb_objspace_data_type_memsize(obj); + if (use_all_types) size += rb_objspace_data_type_memsize(obj); break; case T_MATCH: if (RMATCH(obj)->rmatch) { @@ -2590,7 +2590,7 @@ obj_memsize_of(VALUE obj, int use_tdata) break; case T_NODE: - size += rb_node_memsize(obj); + if (use_all_types) size += rb_node_memsize(obj); break; case T_STRUCT: |