summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-17 10:51:33 +0000
committerktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-17 10:51:33 +0000
commit6bce41b3b745ab18439df4588b404d7e64e3293b (patch)
tree2402b4eeecd2d096f50b87fb40dfb707e9e3108e
parentb62ce0e964b9b35738a5c4620cb749466131b8de (diff)
* 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
-rw-r--r--ChangeLog6
-rw-r--r--gc.c8
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index d12b4917b5..83246e4816 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun Aug 17 19:41:40 2014 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * 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.
+
Sun Aug 17 17:08:12 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (ole_invoke): use RHASH_SIZE instead of
diff --git a/gc.c b/gc.c
index 0d094663b1..cd65fc10d4 100644
--- a/gc.c
+++ b/gc.c
@@ -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: