summaryrefslogtreecommitdiff
path: root/bignum.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-20 00:43:39 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-20 00:43:39 +0000
commit9a82a62937ab8978766b5f88208e8c44d9f6941a (patch)
treec195f3699db6d8f2d2bfd93510528bd74cf1475d /bignum.c
parent1c32ff927f02f17a0e6cfe6edb375bbd3d309d09 (diff)
* bignum.c (big2str_orig): access beyond memory region cause crash
on interrupt. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32651]. [ruby-dev:32641] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r--bignum.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bignum.c b/bignum.c
index 8e2ae98bcd..39afad90c5 100644
--- a/bignum.c
+++ b/bignum.c
@@ -837,12 +837,12 @@ big2str_orig(VALUE x, int base, char* ptr, long len, long hbase, int trim)
while (k--) {
ptr[--j] = ruby_digitmap[num % base];
num /= base;
- if (!trim && j <= 0) break;
+ if (j <= 0) break;
if (trim && i == 0 && num == 0) break;
}
}
if (trim) {
- while (ptr[j] == '0') j++;
+ while (j < len && ptr[j] == '0') j++;
MEMMOVE(ptr, ptr + j, char, len - j);
len -= j;
}