Change one more spot to use gdbpy_ref
authorTom Tromey <tom@tromey.com>
Thu, 12 Jan 2017 14:46:07 +0000 (07:46 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 10 Feb 2017 19:24:33 +0000 (12:24 -0700)
This patch changes one more spot in the Python layer to use gdbpy_ref.

gdb/ChangeLog
2017-02-10  Tom Tromey  <tom@tromey.com>

* python/py-prettyprint.c (pretty_print_one_value): Use
gdbpy_ref.

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

index 96cd417d0f73c338e02c4bfe3bccee9bf0e1aebb..6b449f0d8346a0fcbd2aeee0ff9da022e8017075 100644 (file)
@@ -1,3 +1,8 @@
+2017-02-10  Tom Tromey  <tom@tromey.com>
+
+       * python/py-prettyprint.c (pretty_print_one_value): Use
+       gdbpy_ref.
+
 2017-02-10  Tom Tromey  <tom@tromey.com>
 
        * python/py-cmd.c (cmdpy_destroyer): Use gdbpy_ref.
index e0d21104deb9375088eba22bd2240d356a117164..66929bfea80d2b8388e8370e6dfdafe496e58bd7 100644 (file)
@@ -190,21 +190,22 @@ find_pretty_printer (PyObject *value)
 static PyObject *
 pretty_print_one_value (PyObject *printer, struct value **out_value)
 {
-  PyObject *result = NULL;
+  gdbpy_ref<> result;
 
   *out_value = NULL;
   TRY
     {
-      result = PyObject_CallMethodObjArgs (printer, gdbpy_to_string_cst, NULL);
-      if (result)
+      result.reset (PyObject_CallMethodObjArgs (printer, gdbpy_to_string_cst,
+                                               NULL));
+      if (result != NULL)
        {
-         if (! gdbpy_is_string (result) && ! gdbpy_is_lazy_string (result)
+         if (! gdbpy_is_string (result.get ())
+             && ! gdbpy_is_lazy_string (result.get ())
              && result != Py_None)
            {
-             *out_value = convert_value_from_python (result);
+             *out_value = convert_value_from_python (result.get ());
              if (PyErr_Occurred ())
                *out_value = NULL;
-             Py_DECREF (result);
              result = NULL;
            }
        }
@@ -214,7 +215,7 @@ pretty_print_one_value (PyObject *printer, struct value **out_value)
     }
   END_CATCH
 
-  return result;
+  return result.release ();
 }
 
 /* Return the display hint for the object printer, PRINTER.  Return