summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-08-02 17:24:19 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-08-02 17:24:19 +0000
commit04cf3fa3468dd4948ca453dfa730d52341a270e0 (patch)
tree1469c10473089c78a91e493c860a1194e13beadc
parent81f42c757676dd1e7866d39f42257873f8b14f21 (diff)
* bignum.c (big2str_orig): Refactored.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--bignum.c31
2 files changed, 15 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 8599ae2667..67b3e0432b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,6 @@
-Sat Aug 3 01:40:33 2013 Tanaka Akira <akr@fsij.org>
+Sat Aug 3 02:22:05 2013 Tanaka Akira <akr@fsij.org>
- * bignum.c (big2str_orig): Rename a local variable.
+ * bignum.c (big2str_orig): Refactored.
Sat Aug 3 01:20:19 2013 Tanaka Akira <akr@fsij.org>
diff --git a/bignum.c b/bignum.c
index 2c650481fd..0c27d4defb 100644
--- a/bignum.c
+++ b/bignum.c
@@ -4251,7 +4251,6 @@ big2str_orig(struct big2str_struct *b2s, VALUE x, size_t taillen)
{
long i = RBIGNUM_LEN(x);
size_t j;
- int k;
BDIGIT* ds = BDIGITS(x);
BDIGIT_DBL num;
char buf[SIZEOF_BDIGIT_DBL*CHAR_BIT], *p;
@@ -4271,27 +4270,23 @@ big2str_orig(struct big2str_struct *b2s, VALUE x, size_t taillen)
return;
p = buf;
j = sizeof(buf);
- }
- else {
- power_cache_get_power(b2s->base, 0, &len);
- p = b2s->ptr;
- j = len;
- }
-
- k = b2s->hbase2_numdigits;
- while (k--) {
- p[--j] = ruby_digitmap[num % b2s->base];
- num /= b2s->base;
- if (j <= 0) break;
- if (beginning && num == 0) break;
- }
- if (beginning) {
- while (j < sizeof(buf) && buf[j] == '0')
- j++;
+ do {
+ p[--j] = ruby_digitmap[num % b2s->base];
+ num /= b2s->base;
+ } while (num);
len = sizeof(buf) - j;
big2str_alloc(b2s, len + taillen);
MEMCPY(b2s->ptr, buf + j, char, len);
}
+ else {
+ p = b2s->ptr;
+ j = b2s->hbase2_numdigits;
+ do {
+ p[--j] = ruby_digitmap[num % b2s->base];
+ num /= b2s->base;
+ } while (j);
+ len = b2s->hbase2_numdigits;
+ }
b2s->ptr += len;
}