From 891ca9e06ad6d0bab06573590f9100a28d9dfbfe Mon Sep 17 00:00:00 2001 From: Stefan Krah Date: Wed, 29 May 2013 19:14:17 +0200 Subject: [PATCH] Backport bff16086f03b and bcaaaa00425b. --- Lib/test/test_decimal.py | 13 +++++++++++++ Modules/_decimal/_decimal.c | 10 +++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 296939419c2..50a9ad4362b 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 98d49e6e0a9..d3e394041f6 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));