aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-exitedevent.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/python/py-exitedevent.c')
-rw-r--r--gdb/python/py-exitedevent.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c
index 272fd30..d062f5f 100644
--- a/gdb/python/py-exitedevent.c
+++ b/gdb/python/py-exitedevent.c
@@ -25,30 +25,41 @@ static PyObject *
create_exited_event_object (const LONGEST *exit_code, struct inferior *inf)
{
PyObject *exited_event;
- PyObject *inf_obj;
+ PyObject *inf_obj = NULL;
exited_event = create_event_object (&exited_event_object_type);
if (!exited_event)
goto fail;
- if (exit_code
- && evpy_add_attribute (exited_event,
- "exit_code",
- PyLong_FromLongLong (*exit_code)) < 0)
- goto fail;
+ if (exit_code)
+ {
+ PyObject *exit_code_obj = PyLong_FromLongLong (*exit_code);
+ int failed;
+
+ if (exit_code_obj == NULL)
+ goto fail;
+
+ failed = evpy_add_attribute (exited_event, "exit_code",
+ exit_code_obj) < 0;
+ Py_DECREF (exit_code_obj);
+ if (failed)
+ goto fail;
+ }
inf_obj = inferior_to_inferior_object (inf);
if (!inf_obj || evpy_add_attribute (exited_event,
"inferior",
inf_obj) < 0)
goto fail;
+ Py_DECREF (inf_obj);
return exited_event;
- fail:
- Py_XDECREF (exited_event);
- return NULL;
+ fail:
+ Py_XDECREF (inf_obj);
+ Py_XDECREF (exited_event);
+ return NULL;
}
/* Callback that is used when an exit event occurs. This function