summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-07-19 06:57:34 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-07-19 06:57:34 +0900
commit6d073f8d99f6b4cbc1549f02298a785aba9b9a7a (patch)
tree8ee1dff5893add4ecfe672b7d6654ddc9352697f
parent667ace2bfe190ab1329e77dafde44eff2a121676 (diff)
downloadmruby-6d073f8d99f6b4cbc1549f02298a785aba9b9a7a.tar.gz
mruby-6d073f8d99f6b4cbc1549f02298a785aba9b9a7a.zip
Fix `memsize_of_all` to count memory of subclass instances; #5040
`ObjectSpace.memsize_of_all` takes a class and count memory size of all instances of the class and its subclasses (if any).
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
index b3e8605d7..6ae030dff 100644
--- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c
+++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
@@ -353,7 +353,8 @@ static int
os_memsize_of_all_cb(mrb_state *mrb, struct RBasic *obj, void *d)
{
struct os_memsize_of_all_cb_data *data = (struct os_memsize_of_all_cb_data *)d;
- if(mrb_class_real(obj->c) == data->type) data->t += os_memsize_of_object(mrb, mrb_obj_value(obj));
+ if(mrb_obj_is_kind_of(mrb, mrb_obj_value(obj), data->type))
+ data->t += os_memsize_of_object(mrb, mrb_obj_value(obj));
return 0;
}