summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pack.c6
-rw-r--r--sprintf.c2
-rw-r--r--string.c4
-rw-r--r--test/-ext-/test_printf.rb4
4 files changed, 6 insertions, 10 deletions
diff --git a/pack.c b/pack.c
index 9fecc31a34..440346576b 100644
--- a/pack.c
+++ b/pack.c
@@ -141,7 +141,6 @@ str_associated(VALUE str)
static void
unknown_directive(const char *mode, char type, VALUE fmt)
{
- VALUE f;
char unknown[5];
if (ISPRINT(type)) {
@@ -151,10 +150,7 @@ unknown_directive(const char *mode, char type, VALUE fmt)
else {
snprintf(unknown, sizeof(unknown), "\\x%.2x", type & 0xff);
}
- f = rb_str_quote_unprintable(fmt);
- if (f != fmt) {
- fmt = rb_str_subseq(f, 1, RSTRING_LEN(f) - 2);
- }
+ fmt = rb_str_quote_unprintable(fmt);
rb_warning("unknown %s directive '%s' in '%"PRIsVALUE"'",
mode, unknown, fmt);
}
diff --git a/sprintf.c b/sprintf.c
index f54336fca5..693b30bd8b 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -1121,7 +1121,7 @@ ruby__sfvextra(rb_printf_buffer *fp, size_t valsize, void *valp, long *sz, int s
else if (SYMBOL_P(value)) {
value = rb_sym2str(value);
if (sign == ' ' && !rb_str_symname_p(value)) {
- value = rb_str_inspect(value);
+ value = rb_str_escape(value);
}
}
else {
diff --git a/string.c b/string.c
index 864fcc8791..0d6b02b1dd 100644
--- a/string.c
+++ b/string.c
@@ -11050,7 +11050,7 @@ rb_str_quote_unprintable(VALUE str)
len = RSTRING_LEN(str);
if ((resenc != enc && !rb_str_is_ascii_only_p(str)) ||
!sym_printable(ptr, ptr + len, enc)) {
- return rb_str_inspect(str);
+ return rb_str_escape(str);
}
return str;
}
@@ -11060,7 +11060,7 @@ rb_id_quote_unprintable(ID id)
{
VALUE str = rb_id2str(id);
if (!rb_str_symname_p(str)) {
- return rb_str_inspect(str);
+ return rb_str_escape(str);
}
return str;
}
diff --git a/test/-ext-/test_printf.rb b/test/-ext-/test_printf.rb
index cfec388e8c..c2b50285b9 100644
--- a/test/-ext-/test_printf.rb
+++ b/test/-ext-/test_printf.rb
@@ -21,11 +21,11 @@ class Test_SPrintf < Test::Unit::TestCase
end
def test_quote
- assert_equal('["\n"]', Bug::Printf.q("\n"))
+ assert_equal('[\n]', Bug::Printf.q("\n"))
assert_equal('[aaa]', Bug::Printf.q('aaa'))
assert_equal('[a a]', Bug::Printf.q('a a'))
assert_equal('[]', Bug::Printf.q(''))
- assert_equal('[""]', Bug::Printf.q(:''))
+ assert_equal('[]', Bug::Printf.q(:''))
end
def test_encoding