summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-objectspace
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-07-17 10:51:01 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-07-17 10:52:59 +0900
commit7f66cf7d66f71d729f9ad1b129d9d817c075b979 (patch)
tree5d8564ae73e2889ccc7899a0737e3e5aebcadcbb /mrbgems/mruby-objectspace
parent9840d6a2e7fccb8eb64df3fc8e89fdd3c84670e3 (diff)
downloadmruby-7f66cf7d66f71d729f9ad1b129d9d817c075b979.tar.gz
mruby-7f66cf7d66f71d729f9ad1b129d9d817c075b979.zip
Fix `memsize_of` for string objects; #5032
Diffstat (limited to 'mrbgems/mruby-objectspace')
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
index 7892c6a1b..a9469203f 100644
--- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c
+++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
@@ -250,7 +250,10 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj, mrb_value recurse, mrb_int*
switch(obj.tt) {
case MRB_TT_STRING:
- (*t) += RSTRING_LEN(obj);
+ (*t) += mrb_objspace_page_slot_size();
+ if (!RSTR_EMBED_P(RSTRING(obj)) && !RSTR_SHARED_P(RSTRING(obj))) {
+ (*t) += RSTRING_CAPA(obj);
+ }
break;
case MRB_TT_CLASS:
case MRB_TT_MODULE: