mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue 6637: defaultdict.copy() failed with an empty factory.
This commit is contained in:
parent
fe800a3437
commit
54628fa7c0
2 changed files with 11 additions and 1 deletions
|
@ -1170,6 +1170,9 @@ defdict_copy(defdictobject *dd)
|
|||
whose class constructor has the same signature. Subclasses that
|
||||
define a different constructor signature must override copy().
|
||||
*/
|
||||
|
||||
if (dd->default_factory == NULL)
|
||||
return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd), Py_None, dd, NULL);
|
||||
return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
|
||||
dd->default_factory, dd, NULL);
|
||||
}
|
||||
|
@ -1316,7 +1319,7 @@ defdict_init(PyObject *self, PyObject *args, PyObject *kwds)
|
|||
Py_ssize_t n = PyTuple_GET_SIZE(args);
|
||||
if (n > 0) {
|
||||
newdefault = PyTuple_GET_ITEM(args, 0);
|
||||
if (!PyCallable_Check(newdefault)) {
|
||||
if (!PyCallable_Check(newdefault) && newdefault != Py_None) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"first argument must be callable");
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue