Author: Stian Andreassen
Branch: improve-rbigint
Changeset: r56438:5355a27bac5e
Date: 2012-07-24 23:18 +0200
http://bitbucket.org/pypy/pypy/changeset/5355a27bac5e/
Log: Don't do floordiv/divmod sub inplace as it can break if div = -2**63
diff --git a/pypy/rlib/rbigint.py b/pypy/rlib/rbigint.py
--- a/pypy/rlib/rbigint.py
+++ b/pypy/rlib/rbigint.py
@@ -479,11 +479,8 @@
if mod.sign * other.sign == -1:
if div.sign == 0:
return ONENEGATIVERBIGINT
+ div = div.sub(ONERBIGINT)
- if div.sign == 1:
- _v_isub(div, 0, div.numdigits(), ONERBIGINT, 1)
- else:
- _v_iadd(div, 0, div.numdigits(), ONERBIGINT, 1)
return div
def div(self, other):
@@ -549,10 +546,7 @@
mod = mod.add(w)
if div.sign == 0:
return ONENEGATIVERBIGINT, mod
- if div.sign == 1:
- _v_isub(div, 0, div.numdigits(), ONERBIGINT, 1)
- else:
- _v_iadd(div, 0, div.numdigits(), ONERBIGINT, 1)
+ div = div.sub(ONERBIGINT)
return div, mod
@jit.elidable
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit