diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-12 07:43:14 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-12 07:43:14 +0000 |
commit | 01eb640ca8b6f63c0ad89216c0e896f49ae51481 (patch) | |
tree | 9050574be4d5e8b955444889314384dbed450ddc /numeric.c | |
parent | c32c4364c3b2118d6be62de9fe1f69bc2c2e1c2d (diff) |
* numeric.c (flo_to_s): fixed broken output including nuls.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@27758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'numeric.c')
-rw-r--r-- | numeric.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -585,10 +585,15 @@ flo_to_s(VALUE flt) } else if (decpt - digs < float_dig) { long len; + char *ptr; rb_str_cat(s, buf, digs); rb_str_resize(s, (len = RSTRING_LEN(s)) + decpt - digs + 2); - if (decpt > digs) memset(RSTRING_PTR(s) + len, '0', decpt - digs); - rb_str_cat(s, ".0", 2); + ptr = RSTRING_PTR(s) + len; + if (decpt > digs) { + memset(ptr, '0', decpt - digs); + ptr += decpt - digs; + } + memcpy(ptr, ".0", 2); } else { goto exp; |