Use gdbpy_ref in gdbpy_string_to_argv
authorTom Tromey <tom@tromey.com>
Mon, 7 Nov 2016 04:10:18 +0000 (21:10 -0700)
committerTom Tromey <tom@tromey.com>
Wed, 11 Jan 2017 02:13:31 +0000 (19:13 -0700)
This chanes gdbpy_string_to_argv to use gdbpy_ref.

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

* python/py-cmd.c (gdbpy_string_to_argv): Use gdbpy_ref.

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

index 1fa7915b5c270bb6169456f85f0a678e25e1e7fb..1e8ce9954be9e508d112da419df1ea23533ef575 100644 (file)
@@ -1,3 +1,7 @@
+2017-01-10  Tom Tromey  <tom@tromey.com>
+
+       * python/py-cmd.c (gdbpy_string_to_argv): Use gdbpy_ref.
+
 2017-01-10  Tom Tromey  <tom@tromey.com>
 
        * python/py-type.c (convert_field, make_fielditem, typy_fields)
index 130466d947090e4967fc881a6bc391d0e28e7262..e2879b7cb3fba75d28c150a7db25fd76679abb33 100644 (file)
@@ -27,6 +27,7 @@
 #include "cli/cli-decode.h"
 #include "completer.h"
 #include "language.h"
+#include "py-ref.h"
 
 /* Struct representing built-in completion types.  */
 struct cmdpy_completer
@@ -784,13 +785,12 @@ PyTypeObject cmdpy_object_type =
 PyObject *
 gdbpy_string_to_argv (PyObject *self, PyObject *args)
 {
-  PyObject *py_argv;
   const char *input;
 
   if (!PyArg_ParseTuple (args, "s", &input))
     return NULL;
 
-  py_argv = PyList_New (0);
+  gdbpy_ref py_argv (PyList_New (0));
   if (py_argv == NULL)
     return NULL;
 
@@ -805,21 +805,18 @@ gdbpy_string_to_argv (PyObject *self, PyObject *args)
 
       for (i = 0; c_argv[i] != NULL; ++i)
        {
-         PyObject *argp = PyString_FromString (c_argv[i]);
+         gdbpy_ref argp (PyString_FromString (c_argv[i]));
 
          if (argp == NULL
-             || PyList_Append (py_argv, argp) < 0)
+             || PyList_Append (py_argv.get (), argp.get ()) < 0)
            {
-             Py_XDECREF (argp);
-             Py_DECREF (py_argv);
              freeargv (c_argv);
              return NULL;
            }
-         Py_DECREF (argp);
        }
 
       freeargv (c_argv);
     }
 
-  return py_argv;
+  return py_argv.release ();
 }