goto Done;
if (!ns_len) {
/* nothing novel to pickle in od.__dict__ */
- Py_DECREF(ns);
- ns = NULL;
+ Py_CLEAR(ns);
}
}
value = PyObject_GetItem(od, key);
if (value != NULL) {
if (PyObject_DelItem(od, key) == -1) {
- Py_DECREF(value);
- value = NULL;
+ Py_CLEAR(value);
}
}
}
{
PyObject *od = PyDict_Type.tp_new(type, args, kwds);
if (od != NULL) {
- ((PyODictObject *)od)->od_inst_dict = PyDict_New();
- ((PyODictObject *)od)->od_weakreflist = NULL;
if (_odict_initialize((PyODictObject *)od) < 0)
return NULL;
+ ((PyODictObject *)od)->od_inst_dict = PyDict_New();
+ ((PyODictObject *)od)->od_weakreflist = NULL;
}
return od;
}
node = _odict_find_node(di->di_odict, di->di_current);
if (node == NULL) {
/* Must have been deleted. */
- Py_DECREF(di->di_current);
- di->di_current = NULL;
+ Py_CLEAR(di->di_current);
return NULL;
}
key = di->di_current;
PyObject *result = di->di_result;
value = PyODict_GetItem((PyObject *)di->di_odict, key); /* borrowed */
- if (value == NULL)
+ if (value == NULL) {
+ Py_DECREF(key);
return NULL;
+ }
+ Py_INCREF(value);
if (result->ob_refcnt == 1) {
/* not in use so we can reuse it
}
else {
result = PyTuple_New(2);
- if (result == NULL)
+ if (result == NULL) {
+ Py_DECREF(key);
+ Py_DECREF(value);
return NULL;
+ }
}
- Py_INCREF(value);
PyTuple_SET_ITEM(result, 0, key); /* steals reference */
PyTuple_SET_ITEM(result, 1, value); /* steals reference */
else if (PyObject_HasAttrString(other, "keys")) { /* never fails */
PyObject *keys, *iterator, *key;
keys = PyObject_CallMethod(other, "keys", NULL);
- Py_DECREF(other);
if (keys == NULL)
return NULL;
iterator = PyObject_GetIter(keys);
}
Py_DECREF(key);
}
+ Py_DECREF(other);
Py_DECREF(iterator);
if (res != 0 || PyErr_Occurred())
return NULL;