diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-10-30 03:24:19 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-10-30 03:24:19 +0000 |
commit | 99711c2eb96997c4c8510639aa73b3850ed56337 (patch) | |
tree | 0d1f6e7bee810429137989540bb88275db344d63 /bignum.c | |
parent | 6692dad47e80268298165057c76d1ac3665c8f02 (diff) |
* bignum.c (rb_big2str0): a bug in length adjustment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -691,8 +691,15 @@ rb_big2str0(x, base, trim) } } if (trim) {while (s[j] == '0') j++;} - RSTRING(ss)->len -= RBIGNUM(x)->sign?j:j-1; - memmove(RBIGNUM(x)->sign?s:s+1, s+j, RSTRING(ss)->len); + i = RSTRING(ss)->len - j; + if (RBIGNUM(x)->sign) { + memmove(s, s+j, i); + RSTRING(ss)->len = i-1; + } + else { + memmove(s+1, s+j, i); + RSTRING(ss)->len = i; + } s[RSTRING(ss)->len] = '\0'; return ss; |