summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2013-05-29 17:14:17 (GMT)
committerStefan Krah <skrah@bytereef.org>2013-05-29 17:14:17 (GMT)
commit891ca9e06ad6d0bab06573590f9100a28d9dfbfe (patch)
treebc48c0505ade62d89f74e0c4caf71efdb40cb40d
parent6edda14b2968ca07b94a2fdde4dd43215222fcd8 (diff)
downloadcpython-891ca9e06ad6d0bab06573590f9100a28d9dfbfe.zip
cpython-891ca9e06ad6d0bab06573590f9100a28d9dfbfe.tar.gz
cpython-891ca9e06ad6d0bab06573590f9100a28d9dfbfe.tar.bz2
Backport bff16086f03b and bcaaaa00425b.
-rw-r--r--Lib/test/test_decimal.py13
-rw-r--r--Modules/_decimal/_decimal.c10
2 files changed, 18 insertions, 5 deletions
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 2969394..50a9ad4 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -5373,6 +5373,19 @@ class CWhitebox(unittest.TestCase):
x = (1, (0, 1), "N")
self.assertEqual(str(Decimal(x)), '-sNaN1')
+ def test_sizeof(self):
+ Decimal = C.Decimal
+ HAVE_CONFIG_64 = (C.MAX_PREC > 425000000)
+
+ self.assertGreater(Decimal(0).__sizeof__(), 0)
+ if HAVE_CONFIG_64:
+ x = Decimal(10**(19*24)).__sizeof__()
+ y = Decimal(10**(19*25)).__sizeof__()
+ self.assertEqual(y, x+8)
+ else:
+ x = Decimal(10**(9*24)).__sizeof__()
+ y = Decimal(10**(9*25)).__sizeof__()
+ self.assertEqual(y, x+4)
all_tests = [
CExplicitConstructionTest, PyExplicitConstructionTest,
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index 98d49e6..d3e3940 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -4469,10 +4469,10 @@ _dec_hash(PyDecObject *v)
goto malloc_error;
}
else {
- PyErr_SetString(PyExc_RuntimeError,
- "dec_hash: internal error: please report");
+ PyErr_SetString(PyExc_RuntimeError, /* GCOV_NOT_REACHED */
+ "dec_hash: internal error: please report"); /* GCOV_NOT_REACHED */
}
- result = -1;
+ result = -1; /* GCOV_NOT_REACHED */
}
@@ -5623,7 +5623,7 @@ PyInit__decimal(void)
}
if (base == NULL) {
- goto error;
+ goto error; /* GCOV_NOT_REACHED */
}
ASSIGN_PTR(cm->ex, PyErr_NewException((char *)cm->fqname, base, NULL));
@@ -5655,7 +5655,7 @@ PyInit__decimal(void)
base = PyTuple_Pack(1, signal_map[0].ex);
}
if (base == NULL) {
- goto error;
+ goto error; /* GCOV_NOT_REACHED */
}
ASSIGN_PTR(cm->ex, PyErr_NewException((char *)cm->fqname, base, NULL));