From d9ef711f296afbe2a029961e83a03d023ca29f15 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 7 Jan 2022 14:15:42 -0500 Subject: [PATCH] Improve string info in rb_raw_obj_info Improve rb_raw_obj_info to output additional into about strings including the length, capacity, and whether or not it is embedded. --- gc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gc.c b/gc.c index 2c917e4faa..02f3e0bbb4 100644 --- a/gc.c +++ b/gc.c @@ -13304,8 +13304,15 @@ rb_raw_obj_info(char *buff, const int buff_size, VALUE obj) } break; case T_STRING: { - if (STR_SHARED_P(obj)) APPENDF((BUFF_ARGS, " [shared] ")); - APPENDF((BUFF_ARGS, "%.*s", str_len_no_raise(obj), RSTRING_PTR(obj))); + if (STR_SHARED_P(obj)) { + APPENDF((BUFF_ARGS, " [shared] len: %ld", RSTRING_LEN(obj))); + } + else { + if (STR_EMBED_P(obj)) APPENDF((BUFF_ARGS, " [embed]")); + + APPENDF((BUFF_ARGS, " len: %ld, capa: %ld", RSTRING_LEN(obj), rb_str_capacity(obj))); + } + APPENDF((BUFF_ARGS, " \"%.*s\"", str_len_no_raise(obj), RSTRING_PTR(obj))); break; } case T_SYMBOL: {