]> granicus.if.org Git - python/commitdiff
Fix refleaks in function objects caused by kwdefaults not being allocated.
authorGeorg Brandl <georg@python.org>
Mon, 26 Feb 2007 12:28:57 +0000 (12:28 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 26 Feb 2007 12:28:57 +0000 (12:28 +0000)
Should func_new be extended to support a "kwdefaults" arg?

Objects/funcobject.c

index 956cbbc1b78e8ba9a87b0ef528db4fbea904e131..d835f898b95da974bffe85580910b3822ef304e8 100644 (file)
@@ -413,7 +413,7 @@ func_set_kwdefaults(PyFunctionObject *op, PyObject *value)
 
        if (value == Py_None)
                value = NULL;
-       /* Legal to del f.func_defaults.
+       /* Legal to del f.func_kwdefaults.
         * Can only set func_kwdefaults to NULL or a dict. */
        if (value != NULL && !PyDict_Check(value)) {
                PyErr_SetString(PyExc_TypeError,
@@ -587,6 +587,7 @@ func_dealloc(PyFunctionObject *op)
        Py_XDECREF(op->func_module);
        Py_DECREF(op->func_name);
        Py_XDECREF(op->func_defaults);
+       Py_XDECREF(op->func_kwdefaults);
        Py_XDECREF(op->func_doc);
        Py_XDECREF(op->func_dict);
        Py_XDECREF(op->func_closure);
@@ -609,6 +610,7 @@ func_traverse(PyFunctionObject *f, visitproc visit, void *arg)
        Py_VISIT(f->func_globals);
        Py_VISIT(f->func_module);
        Py_VISIT(f->func_defaults);
+       Py_VISIT(f->func_kwdefaults);
        Py_VISIT(f->func_doc);
        Py_VISIT(f->func_name);
        Py_VISIT(f->func_dict);