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).
This commit is contained in:
Yukihiro "Matz" Matsumoto
2020-07-19 06:57:34 +09:00
parent 667ace2bfe
commit 6d073f8d99
@@ -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;
}