diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-07-19 06:57:34 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-07-19 06:57:34 +0900 |
| commit | 6d073f8d99f6b4cbc1549f02298a785aba9b9a7a (patch) | |
| tree | 8ee1dff5893add4ecfe672b7d6654ddc9352697f | |
| parent | 667ace2bfe190ab1329e77dafde44eff2a121676 (diff) | |
| download | mruby-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.c | 3 |
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; } |
