summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--bignum.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c1a1ef338..628461ac2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Dec 17 03:57:01 2005 Tanaka Akira <akr@m17n.org>
+
+ * bignum.c (rb_big_rshift): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease).
+
Sat Dec 17 03:30:23 2005 Tanaka Akira <akr@m17n.org>
* eval.c (bmcall): fix a GC problem by tail call on
diff --git a/bignum.c b/bignum.c
index 536779bb4..425676d32 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1855,6 +1855,7 @@ rb_big_rshift(x, y)
VALUE z;
BDIGIT_DBL num = 0;
long i, j;
+ volatile VALUE save_x;
if (shift < 0) return rb_big_lshift(x, INT2FIX(-shift));
@@ -1865,7 +1866,7 @@ rb_big_rshift(x, y)
return INT2FIX(-1);
}
if (!RBIGNUM(x)->sign) {
- x = rb_big_clone(x);
+ save_x = x = rb_big_clone(x);
get2comp(x);
}
xds = BDIGITS(x);