From bf1ca3b9476185fb6e301d85e646f5d2af95e257 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 8 Nov 2016 15:35:24 -0700 Subject: [PATCH] Use gdbpy_ref in invoke_match_method Change invoke_match_method to use gdbpy_ref. I neglected to convert this function in my earlier series. 2017-01-10 Tom Tromey * python/py-xmethods.c (invoke_match_method): Use gdbpy_ref. --- gdb/ChangeLog | 5 ++++ gdb/python/py-xmethods.c | 50 ++++++++++------------------------------ 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0fa91f9b27d..66a515061db 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-01-10 Tom Tromey + + * python/py-xmethods.c (invoke_match_method): Use + gdbpy_ref. + 2017-01-10 Tom Tromey * python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): use diff --git a/gdb/python/py-xmethods.c b/gdb/python/py-xmethods.c index 2bac9da3627..939cff36215 100644 --- a/gdb/python/py-xmethods.c +++ b/gdb/python/py-xmethods.c @@ -94,59 +94,33 @@ static PyObject * invoke_match_method (PyObject *matcher, PyObject *py_obj_type, const char *xmethod_name) { - PyObject *py_xmethod_name; - PyObject *match_method, *enabled_field, *match_result; - struct cleanup *cleanups; int enabled; - cleanups = make_cleanup (null_cleanup, NULL); - - enabled_field = PyObject_GetAttrString (matcher, enabled_field_name); + gdbpy_ref enabled_field (PyObject_GetAttrString (matcher, + enabled_field_name)); if (enabled_field == NULL) - { - do_cleanups (cleanups); - return NULL; - } - make_cleanup_py_decref (enabled_field); + return NULL; - enabled = PyObject_IsTrue (enabled_field); + enabled = PyObject_IsTrue (enabled_field.get ()); if (enabled == -1) - { - do_cleanups (cleanups); - return NULL; - } + return NULL; if (enabled == 0) { /* Return 'None' if the matcher is not enabled. */ - do_cleanups (cleanups); Py_RETURN_NONE; } - match_method = PyObject_GetAttrString (matcher, match_method_name); + gdbpy_ref match_method (PyObject_GetAttrString (matcher, match_method_name)); if (match_method == NULL) - { - do_cleanups (cleanups); - return NULL; - } - make_cleanup_py_decref (match_method); + return NULL; - py_xmethod_name = PyString_FromString (xmethod_name); + gdbpy_ref py_xmethod_name (PyString_FromString (xmethod_name)); if (py_xmethod_name == NULL) - { - do_cleanups (cleanups); - return NULL; - } - make_cleanup_py_decref (py_xmethod_name); - - match_result = PyObject_CallMethodObjArgs (matcher, - py_match_method_name, - py_obj_type, - py_xmethod_name, - NULL); - - do_cleanups (cleanups); + return NULL; - return match_result; + return PyObject_CallMethodObjArgs (matcher, py_match_method_name, + py_obj_type, py_xmethod_name.get (), + NULL); } /* Implementation of get_matching_xmethod_workers for Python. */ -- 2.30.2