name->ob_type->tp_name);
return -1;
}
- else
- Py_INCREF(name);
- if (tp->tp_dict == NULL) {
- if (PyType_Ready(tp) < 0)
- goto done;
- }
+ if (tp->tp_dict == NULL && PyType_Ready(tp) < 0)
+ return -1;
+
+ Py_INCREF(name);
descr = _PyType_Lookup(tp, name);
Py_XINCREF(descr);
res = PyDict_DelItem(dict, name);
else
res = PyDict_SetItem(dict, name, value);
+ Py_DECREF(dict);
if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError))
PyErr_SetObject(PyExc_AttributeError, name);
- Py_DECREF(dict);
goto done;
}