When we encounter a failure, all previously borrowed references should
be freed. Especially if the program is not failing immediately
This patch must be backported as far as 2.0.
key = PY_STRING_FROM_STRING("name");
if (key == NULL) {
Py_DECREF(kw_args);
+ Py_DECREF(ent);
PyErr_Print();
return 0;
}
if (func == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
PyErr_Print();
return 0;
}
if (ip_dict == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
PyErr_Print();
return 0;
if (ip_name == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
Py_DECREF(ip_dict);
PyErr_Print();
if (ip_value == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
Py_DECREF(ip_dict);
Py_DECREF(ip_name);
Py_DECREF(ip_name);
Py_DECREF(ip_value);
if (ret == -1) {
+ Py_DECREF(kw_args);
+ Py_DECREF(ent);
+ Py_DECREF(key);
+ Py_DECREF(func);
Py_DECREF(ip_dict);
PyErr_Print();
return 0;