summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2013-01-24 15:17:05 (GMT)
committerEli Bendersky <eliben@gmail.com>2013-01-24 15:17:05 (GMT)
commit48df2eb9655234c66c7c53701260085ad1ba8044 (patch)
tree41701a31539dff8c4c9aa366d5b94b32bfad9370
parentaaa9780fe174a4ed5fc19df1d474fb802a19fa42 (diff)
parenteb8c451bd27e64356d848c5e0a0d35b9d70371ca (diff)
downloadcpython-48df2eb9655234c66c7c53701260085ad1ba8044.zip
cpython-48df2eb9655234c66c7c53701260085ad1ba8044.tar.gz
cpython-48df2eb9655234c66c7c53701260085ad1ba8044.tar.bz2
merge heads
-rw-r--r--Lib/test/test_decimal.py14
-rw-r--r--Modules/_decimal/_decimal.c8
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);