diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-04-25 02:19:51 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-04-25 02:19:51 -0700 |
| commit | 0aecb8a2bbe2595bc6261f1d08c256becfc53482 (patch) | |
| tree | 3ee899809787b3bf1ed660a3c0a16e1347372759 | |
| parent | 8464cac63cce822245f76284a48d35343b680507 (diff) | |
| parent | 6684b7d1cff9eabf71fc0eea2ad06288f7c56afd (diff) | |
| download | mruby-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.rb | 2 | ||||
| -rw-r--r-- | src/string.c | 7 | ||||
| -rw-r--r-- | test/t/string.rb | 5 |
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 |
