summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-14 02:35:51 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-14 02:35:51 +0000
commitc05fa459bb9f77c4fecdd230e8d1379cc997975e (patch)
tree6150004feae5cbc52d874119c7b61362b490100b /string.c
parent251c7892c15082078b8db3607155b262ad8ea490 (diff)
quote symbols
* sprintf.c (ruby__sfvextra): quote symbols as identifiers. * string.c (rb_id_quote_unprintable): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/string.c b/string.c
index ebf5618c88..710c753336 100644
--- a/string.c
+++ b/string.c
@@ -10364,7 +10364,7 @@ rb_str_symname_p(VALUE sym)
ptr = RSTRING_PTR(sym);
len = RSTRING_LEN(sym);
if ((resenc != enc && !rb_str_is_ascii_only_p(sym)) || len != (long)strlen(ptr) ||
- !rb_enc_symname_p(ptr, enc) || !sym_printable(ptr, ptr + len, enc)) {
+ !rb_enc_symname2_p(ptr, len, enc) || !sym_printable(ptr, ptr + len, enc)) {
return FALSE;
}
return TRUE;
@@ -10394,7 +10394,11 @@ rb_str_quote_unprintable(VALUE str)
MJIT_FUNC_EXPORTED VALUE
rb_id_quote_unprintable(ID id)
{
- return rb_str_quote_unprintable(rb_id2str(id));
+ VALUE str = rb_id2str(id);
+ if (!rb_str_symname_p(str)) {
+ return rb_str_inspect(str);
+ }
+ return str;
}
/*