[pypy-commit] pypy py3.5: Fix issue #2583
rlamy
pypy.commits at gmail.com
Mon Jun 26 13:56:39 EDT 2017
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.5
Changeset: r91652:333ccb80fc0e
Date: 2017-06-26 18:56 +0100
http://bitbucket.org/pypy/pypy/changeset/333ccb80fc0e/
Log: Fix issue #2583
diff --git a/lib_pypy/_decimal.py b/lib_pypy/_decimal.py
--- a/lib_pypy/_decimal.py
+++ b/lib_pypy/_decimal.py
@@ -489,13 +489,16 @@
vv.exp = 0
multiplied = Decimal._new_empty()
denom = Decimal(other.denominator)
- with _CatchStatus(context) as (ctx, status_ptr):
- _mpdec.mpd_qmul(multiplied._mpd, vv, denom._mpd,
- ctx, status_ptr)
- multiplied._mpd.exp += exp # XXX probably a bug
- # in _decimal.c
+ maxctx = _ffi.new("struct mpd_context_t*")
+ _mpdec.mpd_maxcontext(maxctx)
+ status_ptr = _ffi.new("uint32_t*")
+ _mpdec.mpd_qmul(multiplied._mpd, vv, denom._mpd,
+ maxctx, status_ptr)
+ multiplied._mpd.exp = exp
finally:
_mpdec.mpd_del(vv)
+ if status_ptr[0] != 0:
+ raise ValueError("exact conversion for comparison failed")
return multiplied, numerator
else:
More information about the pypy-commit
mailing list