summaryrefslogtreecommitdiffstats
path: root/Modules/_decimal
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2014-04-29 16:23:35 (GMT)
committerStefan Krah <skrah@bytereef.org>2014-04-29 16:23:35 (GMT)
commitf1d4e421953e7132a84f4ec5513ddb80d7e29174 (patch)
treec62467695236fd8f31de60f48cd40b48d15e17a6 /Modules/_decimal
parentae43046b614439234de596ddad9d6d07b15092aa (diff)
downloadcpython-f1d4e421953e7132a84f4ec5513ddb80d7e29174.zip
cpython-f1d4e421953e7132a84f4ec5513ddb80d7e29174.tar.gz
cpython-f1d4e421953e7132a84f4ec5513ddb80d7e29174.tar.bz2
Issue #21374: Fix pickling of DecimalTuple.
Diffstat (limited to 'Modules/_decimal')
-rw-r--r--Modules/_decimal/_decimal.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index ea5253e..8be9be6 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -3542,7 +3542,7 @@ PyDec_Round(PyObject *dec, PyObject *args)
}
}
-static PyObject *DecimalTuple = NULL;
+static PyTypeObject *DecimalTuple = NULL;
/* Return the DecimalTuple representation of a PyDecObject. */
static PyObject *
PyDec_AsTuple(PyObject *dec, PyObject *dummy UNUSED)
@@ -3625,7 +3625,7 @@ PyDec_AsTuple(PyObject *dec, PyObject *dummy UNUSED)
}
}
- result = PyObject_CallFunctionObjArgs(DecimalTuple,
+ result = PyObject_CallFunctionObjArgs((PyObject *)DecimalTuple,
sign, coeff, expt, NULL);
out:
@@ -5562,9 +5562,14 @@ PyInit__decimal(void)
/* DecimalTuple */
ASSIGN_PTR(collections, PyImport_ImportModule("collections"));
- ASSIGN_PTR(DecimalTuple, PyObject_CallMethod(collections,
+ ASSIGN_PTR(DecimalTuple, (PyTypeObject *)PyObject_CallMethod(collections,
"namedtuple", "(ss)", "DecimalTuple",
"sign digits exponent"));
+
+ ASSIGN_PTR(obj, PyUnicode_FromString("decimal"));
+ CHECK_INT(PyDict_SetItemString(DecimalTuple->tp_dict, "__module__", obj));
+ Py_CLEAR(obj);
+
/* MutableMapping */
ASSIGN_PTR(MutableMapping, PyObject_GetAttrString(collections,
"MutableMapping"));
@@ -5591,7 +5596,7 @@ PyInit__decimal(void)
CHECK_INT(PyModule_AddObject(m, "Context",
(PyObject *)&PyDecContext_Type));
Py_INCREF(DecimalTuple);
- CHECK_INT(PyModule_AddObject(m, "DecimalTuple", DecimalTuple));
+ CHECK_INT(PyModule_AddObject(m, "DecimalTuple", (PyObject *)DecimalTuple));
/* Create top level exception */