diff options
Diffstat (limited to 'gdb/python/py-exitedevent.c')
-rw-r--r-- | gdb/python/py-exitedevent.c | 29 |
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 |