diff options
author | Stefan Krah <skrah@bytereef.org> | 2014-04-29 16:23:35 (GMT) |
---|---|---|
committer | Stefan Krah <skrah@bytereef.org> | 2014-04-29 16:23:35 (GMT) |
commit | f1d4e421953e7132a84f4ec5513ddb80d7e29174 (patch) | |
tree | c62467695236fd8f31de60f48cd40b48d15e17a6 /Modules/_decimal | |
parent | ae43046b614439234de596ddad9d6d07b15092aa (diff) | |
download | cpython-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.c | 13 |
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 */ |