summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-04-25 02:19:51 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-04-25 02:19:51 -0700
commit0aecb8a2bbe2595bc6261f1d08c256becfc53482 (patch)
tree3ee899809787b3bf1ed660a3c0a16e1347372759
parent8464cac63cce822245f76284a48d35343b680507 (diff)
parent6684b7d1cff9eabf71fc0eea2ad06288f7c56afd (diff)
downloadmruby-0aecb8a2bbe2595bc6261f1d08c256becfc53482.tar.gz
mruby-0aecb8a2bbe2595bc6261f1d08c256becfc53482.zip
Merge pull request #1212 from monaka/pr-fixup-string
Fix-up string
-rw-r--r--mrbgems/mruby-string-ext/test/string.rb2
-rw-r--r--src/string.c7
-rw-r--r--test/t/string.rb5
3 files changed, 8 insertions, 6 deletions
diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb
index ce4bc7352..2bb32cef3 100644
--- a/mrbgems/mruby-string-ext/test/string.rb
+++ b/mrbgems/mruby-string-ext/test/string.rb
@@ -14,6 +14,8 @@ assert('String#getbyte') do
end
assert('String#dump') do
+ ("\1" * 100).dump # should not raise an exception - regress #1210
+ "\0".inspect == "\"\\000\"" and
"foo".dump == "\"foo\""
end
diff --git a/src/string.c b/src/string.c
index 5152eadb3..7ea6844a1 100644
--- a/src/string.c
+++ b/src/string.c
@@ -2438,8 +2438,11 @@ mrb_str_inspect(mrb_state *mrb, mrb_value str)
continue;
}
else {
- int n = sprintf(buf, "\\%03o", c & 0377);
- mrb_str_buf_cat(mrb, result, buf, n);
+ buf[0] = '\\';
+ buf[3] = '0' + c % 8; c /= 8;
+ buf[2] = '0' + c % 8; c /= 8;
+ buf[1] = '0' + c % 8;
+ mrb_str_buf_cat(mrb, result, buf, 4);
continue;
}
}
diff --git a/test/t/string.rb b/test/t/string.rb
index 945ef890c..2d0804519 100644
--- a/test/t/string.rb
+++ b/test/t/string.rb
@@ -415,10 +415,7 @@ assert('String#each_byte') do
bytes1 == bytes2
end
-assert('String#dump') do
- ("\1" * 100).dump # should not raise an exception - regress #1210
-end
-
assert('String#inspect') do
("\1" * 100).inspect # should not raise an exception - regress #1210
+ "\0".inspect == "\"\\000\""
end