aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-exitedevent.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-08-15 14:22:02 +0000
committerTom Tromey <tromey@redhat.com>2012-08-15 14:22:02 +0000
commitdb6573d6646f950b5a758fd68d180de8ae1e8981 (patch)
tree5c1765409a97237e924cd9f3a0dbaff697f631de /gdb/python/py-exitedevent.c
parenta036ba48efc7145d0cd2de136be0443b65f672d2 (diff)
downloadgdb-db6573d6646f950b5a758fd68d180de8ae1e8981.zip
gdb-db6573d6646f950b5a758fd68d180de8ae1e8981.tar.gz
gdb-db6573d6646f950b5a758fd68d180de8ae1e8981.tar.bz2
PR python/14387:
* python/py-bpevent.c (create_breakpoint_event_object): Update comment. * python/py-event.c (evpy_add_attribute): Update comment. * python/py-exitedevent.c (create_exited_event_object): Fix reference counting and error handling. * python/py-newobjfileevent.c (create_new_objfile_event_object): Fix reference counting. * python/py-signalevent.c (create_signal_event_object): Fix reference counting and error handling. * python/py-stopevent.c (emit_stop_event): Fix reference counting. * python/py-threadevent.c (get_event_thread): Return a borrowed reference. * python/py-type.c (convert_field): Fix reference counting.
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