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 f4f5e0b3678a13652b96fe90a1229d6cb2158e36..68eaf566d5ae15aa93c9ce900d634a018ce1d091 100644 (file)
@@ -1,3 +1,8 @@
+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)
index c0bc0c214ba7f9c8c0df63357f4ef200b98e3474..690412a0ecb5da908f7e74eae8c76b33825b9f39 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;
 }