Use gdbpy_ref in pyuw_object_attribute_to_pointer
authorTom Tromey <tom@tromey.com>
Sun, 20 Nov 2016 17:48:51 +0000 (10:48 -0700)
committerTom Tromey <tom@tromey.com>
Wed, 11 Jan 2017 02:14:05 +0000 (19:14 -0700)
This changes pyuw_object_attribute_to_pointer to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

* python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
gdbpy_ref.

gdb/ChangeLog
gdb/python/py-unwind.c

index f4f5e0b..68eaf56 100644 (file)
@@ -1,5 +1,10 @@
 2017-01-10  Tom Tromey  <tom@tromey.com>
 
+       * python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
+       gdbpy_ref.
+
+2017-01-10  Tom Tromey  <tom@tromey.com>
+
        * python/python.c (eval_python_command, gdbpy_decode_line)
        (gdbpy_run_events, gdbpy_start_type_printers)
        (gdbpy_apply_type_printers): Use gdbpy_ref.
index c0bc0c2..690412a 100644 (file)
@@ -177,18 +177,17 @@ pyuw_object_attribute_to_pointer (PyObject *pyo, const char *attr_name,
 
   if (PyObject_HasAttrString (pyo, attr_name))
     {
-      PyObject *pyo_value = PyObject_GetAttrString (pyo, attr_name);
+      gdbpy_ref pyo_value (PyObject_GetAttrString (pyo, attr_name));
 
       if (pyo_value != NULL && pyo_value != Py_None)
         {
-          rc = pyuw_value_obj_to_pointer (pyo_value, addr);
+          rc = pyuw_value_obj_to_pointer (pyo_value.get (), addr);
           if (!rc)
             PyErr_Format (
                 PyExc_ValueError,
                 _("The value of the '%s' attribute is not a pointer."),
                 attr_name);
         }
-      Py_XDECREF (pyo_value);
     }
   return rc;
 }