diff options
author | Eli Bendersky <eliben@gmail.com> | 2013-01-24 15:17:05 (GMT) |
---|---|---|
committer | Eli Bendersky <eliben@gmail.com> | 2013-01-24 15:17:05 (GMT) |
commit | 48df2eb9655234c66c7c53701260085ad1ba8044 (patch) | |
tree | 41701a31539dff8c4c9aa366d5b94b32bfad9370 | |
parent | aaa9780fe174a4ed5fc19df1d474fb802a19fa42 (diff) | |
parent | eb8c451bd27e64356d848c5e0a0d35b9d70371ca (diff) | |
download | cpython-48df2eb9655234c66c7c53701260085ad1ba8044.zip cpython-48df2eb9655234c66c7c53701260085ad1ba8044.tar.gz cpython-48df2eb9655234c66c7c53701260085ad1ba8044.tar.bz2 |
merge heads
-rw-r--r-- | Lib/test/test_decimal.py | 14 | ||||
-rw-r--r-- | Modules/_decimal/_decimal.c | 8 |
2 files changed, 11 insertions, 11 deletions
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 37637d6..69a2faf 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -4971,22 +4971,16 @@ class CWhitebox(unittest.TestCase): def test_c_format(self): # Restricted input Decimal = C.Decimal - InvalidOperation = C.InvalidOperation - Rounded = C.Rounded - localcontext = C.localcontext HAVE_CONFIG_64 = (C.MAX_PREC > 425000000) self.assertRaises(TypeError, Decimal(1).__format__, "=10.10", [], 9) self.assertRaises(TypeError, Decimal(1).__format__, "=10.10", 9) self.assertRaises(TypeError, Decimal(1).__format__, []) - with localcontext() as c: - c.traps[InvalidOperation] = True - c.traps[Rounded] = True - self.assertRaises(ValueError, Decimal(1).__format__, "<>=10.10") - maxsize = 2**63-1 if HAVE_CONFIG_64 else 2**31-1 - self.assertRaises(InvalidOperation, Decimal("1.23456789").__format__, - "=%d.1" % maxsize) + self.assertRaises(ValueError, Decimal(1).__format__, "<>=10.10") + maxsize = 2**63-1 if HAVE_CONFIG_64 else 2**31-1 + self.assertRaises(ValueError, Decimal("1.23456789").__format__, + "=%d.1" % maxsize) def test_c_integral(self): Decimal = C.Decimal diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index 5e9fd67..89386ff 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -3222,7 +3222,13 @@ dec_format(PyObject *dec, PyObject *args) decstring = mpd_qformat_spec(MPD(dec), &spec, CTX(context), &status); if (decstring == NULL) { - dec_addstatus(context, status); + if (status & MPD_Malloc_error) { + PyErr_NoMemory(); + } + else { + PyErr_SetString(PyExc_ValueError, + "format specification exceeds internal limits of _decimal"); + } goto finish; } result = PyUnicode_DecodeUTF8(decstring, strlen(decstring), NULL); |