From b42698eaff77b1894176104bb32b5c7396eb3361 Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 8 Aug 2007 02:26:40 +0000 Subject: [PATCH] * bignum.c (rb_big2str0): should preserve sign mark. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ bignum.c | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index f855d4ad7f..15f8c9d32d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed Aug 8 11:25:25 2007 NAKAMURA Usaku + + * bignum.c (rb_big2str0): should preserve sign mark. + Wed Aug 8 11:02:43 2007 Nobuyoshi Nakada * common.mk (btest-miniruby, test-sample): split the test target diff --git a/bignum.c b/bignum.c index 15a5417a08..7aed3af8aa 100644 --- a/bignum.c +++ b/bignum.c @@ -867,15 +867,15 @@ rb_big2str0(VALUE x, int base, int trim) #if SIZEOF_BDIGITS > 2 hbase *= hbase; #endif - off = !RTEST(trim) && !RBIGNUM(x)->sign; + off = !RTEST(trim) || !RBIGNUM(x)->sign; xx = rb_big_clone(x); RBIGNUM(xx)->sign = 1; if (n1 <= KARATSUBA_DIGITS) { - len = big2str_orig(xx, base, ptr + off, 2*n1, hbase, RTEST(trim)); + len = off + big2str_orig(xx, base, ptr + off, 2*n1, hbase, RTEST(trim)); } else { - len = big2str_karatsuba(xx, base, ptr + off, n1, - 2*n1, hbase, RTEST(trim)); + len = off + big2str_karatsuba(xx, base, ptr + off, n1, + 2*n1, hbase, RTEST(trim)); } ptr[len] = '\0';