summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Objects/typeobject.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index ee6e5d9..115e1e6 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -3954,7 +3954,12 @@ add_tp_new_wrapper(PyTypeObject *type)
func = PyCFunction_New(tp_new_methoddef, (PyObject *)type);
if (func == NULL)
return -1;
- return PyDict_SetItemString(type->tp_dict, "__new__", func);
+ if(PyDict_SetItemString(type->tp_dict, "__new__", func)) {
+ Py_DECREF(func);
+ return -1;
+ }
+ Py_DECREF(func);
+ return 0;
}
/* Slot wrappers that call the corresponding __foo__ slot. See comments