From 74c49d454b81c84fcffbc090466e241bdefd2f3a Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 20 Nov 2016 10:27:59 -0700 Subject: [PATCH] Use gdbpy_ref in py_print_frame This changes py_print_frame to use gdbpy_ref in more places. 2017-01-10 Tom Tromey * python/py-framefilter.c (py_print_frame): Use gdbpy_ref. --- gdb/ChangeLog | 4 ++++ gdb/python/py-framefilter.c | 14 ++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 912b51aefa0..ce31184de01 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2017-01-10 Tom Tromey + + * python/py-framefilter.c (py_print_frame): Use gdbpy_ref. + 2017-01-10 Tom Tromey * python/py-finishbreakpoint.c (bpfinishpy_out_of_scope): Use diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c index 3a7132b3bef..7a7dfbc8d04 100644 --- a/gdb/python/py-framefilter.c +++ b/gdb/python/py-framefilter.c @@ -1009,7 +1009,6 @@ py_print_frame (PyObject *filter, int flags, struct frame_info *frame = NULL; struct cleanup *cleanup_stack; struct value_print_options opts; - PyObject *py_inf_frame; int print_level, print_frame_info, print_args, print_locals; gdb::unique_xmalloc_ptr function_to_free; @@ -1024,14 +1023,11 @@ py_print_frame (PyObject *filter, int flags, /* Get the underlying frame. This is needed to determine GDB architecture, and also, in the cases of frame variables/arguments to read them if they returned filter object requires us to do so. */ - py_inf_frame = PyObject_CallMethod (filter, "inferior_frame", NULL); + gdbpy_ref py_inf_frame (PyObject_CallMethod (filter, "inferior_frame", NULL)); if (py_inf_frame == NULL) return EXT_LANG_BT_ERROR; - frame = frame_object_to_frame_info (py_inf_frame);; - - Py_DECREF (py_inf_frame); - + frame = frame_object_to_frame_info (py_inf_frame.get ()); if (frame == NULL) return EXT_LANG_BT_ERROR; @@ -1085,7 +1081,7 @@ py_print_frame (PyObject *filter, int flags, address printing. */ if (PyObject_HasAttrString (filter, "address")) { - PyObject *paddr = PyObject_CallMethod (filter, "address", NULL); + gdbpy_ref paddr (PyObject_CallMethod (filter, "address", NULL)); if (paddr == NULL) { @@ -1095,16 +1091,14 @@ py_print_frame (PyObject *filter, int flags, if (paddr != Py_None) { - if (get_addr_from_python (paddr, &address) < 0) + if (get_addr_from_python (paddr.get (), &address) < 0) { - Py_DECREF (paddr); do_cleanups (cleanup_stack); return EXT_LANG_BT_ERROR; } has_addr = 1; } - Py_DECREF (paddr); } } -- 2.30.2