summaryrefslogtreecommitdiffhomepage
path: root/src/symbol.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-09-26 23:56:40 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2019-09-26 23:56:40 +0900
commitd4be545d54ad53e282637f66ef5b770b9effa918 (patch)
treecce51556d62705c784274b3ece09fe1e1e965b62 /src/symbol.c
parent60cc46a92cf93f408dac22658c6a206e882e0e04 (diff)
downloadmruby-d4be545d54ad53e282637f66ef5b770b9effa918.tar.gz
mruby-d4be545d54ad53e282637f66ef5b770b9effa918.zip
Fixed `codedump` for human readable symbol format; ref #4684
Diffstat (limited to 'src/symbol.c')
-rw-r--r--src/symbol.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/symbol.c b/src/symbol.c
index 6ff1e54da..d7718c63e 100644
--- a/src/symbol.c
+++ b/src/symbol.c
@@ -524,14 +524,14 @@ mrb_sym_str(mrb_state *mrb, mrb_sym sym)
return mrb_str_new_static(mrb, name, len);
}
-MRB_API const char*
-mrb_sym_name(mrb_state *mrb, mrb_sym sym)
+static const char*
+sym_name(mrb_state *mrb, mrb_sym sym, mrb_bool dump)
{
mrb_int len;
const char *name = mrb_sym_name_len(mrb, sym, &len);
if (!name) return NULL;
- if (strlen(name) == (size_t)len) {
+ if (strlen(name) == (size_t)len && (!dump || symname_p(name))) {
return name;
}
else {
@@ -542,6 +542,18 @@ mrb_sym_name(mrb_state *mrb, mrb_sym sym)
}
}
+MRB_API const char*
+mrb_sym_name(mrb_state *mrb, mrb_sym sym)
+{
+ return sym_name(mrb, sym, FALSE);
+}
+
+MRB_API const char*
+mrb_sym_dump(mrb_state *mrb, mrb_sym sym)
+{
+ return sym_name(mrb, sym, TRUE);
+}
+
#define lesser(a,b) (((a)>(b))?(b):(a))
static mrb_value