summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 296939419c..50a9ad4362 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 98d49e6e0a..d3e394041f 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));