mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Issue #21374: Fix pickling of DecimalTuple.
This commit is contained in:
parent
ae43046b61
commit
f1d4e42195
2 changed files with 26 additions and 4 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue