From fc758346e8825efd6652edfc29f89844280482e7 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 8 Dec 2015 05:20:41 +0000 Subject: marshal.c: skip internal names * marshal.c (w_objivar): skip internal instance variables in T_OBJECT too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- marshal.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'marshal.c') diff --git a/marshal.c b/marshal.c index 3b7f79d614..8bc80194c0 100644 --- a/marshal.c +++ b/marshal.c @@ -637,16 +637,9 @@ w_ivar(st_index_t num, VALUE ivobj, VALUE encname, struct dump_call_arg *arg) static void w_objivar(VALUE obj, struct dump_call_arg *arg) { - VALUE *ptr; - long i, len, num; - - len = ROBJECT_NUMIV(obj); - ptr = ROBJECT_IVPTR(obj); - num = 0; - for (i = 0; i < len; i++) - if (ptr[i] != Qundef) - num += 1; + st_data_t num = 0; + rb_ivar_foreach(obj, obj_count_ivars, (st_data_t)&num); w_long(num, arg->arg); if (num != 0) { rb_ivar_foreach(obj, w_obj_each, (st_data_t)arg); -- cgit v1.2.3