diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-08 08:09:02 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-08 08:09:02 +0000 |
commit | 04bc7dbc8b4d35aeee043214effe3cf664fa4d00 (patch) | |
tree | 055a9fd50033d456cd7a5a241e8ff6644fefc1e3 /string.c | |
parent | ee72d1c46ce80e0eb1bf4744c44a7cf6cdf46417 (diff) |
merges r29622 from trunk into ruby_1_9_2.
--
* string.c (rb_str_dump): fix expected length. [ruby-core:32935]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@30129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -4263,12 +4263,11 @@ rb_str_dump(VALUE str) } else { if (u8) { /* \u{NN} */ - char buf[32]; int n = rb_enc_precise_mbclen(p-1, pend, enc); - if (MBCLEN_CHARFOUND_P(n)) { - int cc = rb_enc_mbc_to_codepoint(p-1, pend, enc); - sprintf(buf, "%x", cc); - len += strlen(buf)+4; + if (MBCLEN_CHARFOUND_P(n-1)) { + unsigned int cc = rb_enc_mbc_to_codepoint(p-1, pend, enc); + while (cc >>= 4) len++; + len += 5; p += MBCLEN_CHARFOUND_LEN(n)-1; break; } |