diff options
author | Tom Tromey <tom@tromey.com> | 2017-04-30 23:03:58 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-08-03 07:59:09 -0600 |
commit | 1c034b67a03ed928eb3916034eb1e782a8188520 (patch) | |
tree | f675f92db5d9490def760a80859cbec88742c016 /gdb/python/py-param.c | |
parent | 773a1edcd1086fc76a91055bec67e2d14d76940d (diff) | |
download | gdb-1c034b67a03ed928eb3916034eb1e782a8188520.zip gdb-1c034b67a03ed928eb3916034eb1e782a8188520.tar.gz gdb-1c034b67a03ed928eb3916034eb1e782a8188520.tar.bz2 |
Use gdb_argv in Python
This changes one spot in the Python code to use gdb_argv. This
removes the last cleanup from the Python layer.
ChangeLog
2017-08-03 Tom Tromey <tom@tromey.com>
* python/py-param.c (compute_enum_values): Use gdb_argv.
Diffstat (limited to 'gdb/python/py-param.c')
-rw-r--r-- | gdb/python/py-param.c | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c index f0d3423..455c99e 100644 --- a/gdb/python/py-param.c +++ b/gdb/python/py-param.c @@ -555,7 +555,6 @@ static int compute_enum_values (parmpy_object *self, PyObject *enum_values) { Py_ssize_t size, i; - struct cleanup *back_to; if (! enum_values) { @@ -581,36 +580,27 @@ compute_enum_values (parmpy_object *self, PyObject *enum_values) return 0; } - self->enumeration = XCNEWVEC (const char *, size + 1); - back_to = make_cleanup (free_current_contents, &self->enumeration); + gdb_argv holder (XCNEWVEC (char *, size + 1)); + char **enumeration = holder.get (); for (i = 0; i < size; ++i) { gdbpy_ref<> item (PySequence_GetItem (enum_values, i)); if (item == NULL) - { - do_cleanups (back_to); - return 0; - } + return 0; if (! gdbpy_is_string (item.get ())) { - do_cleanups (back_to); PyErr_SetString (PyExc_RuntimeError, _("The enumeration item not a string.")); return 0; } - self->enumeration[i] - = python_string_to_host_string (item.get ()).release (); - if (self->enumeration[i] == NULL) - { - do_cleanups (back_to); - return 0; - } - make_cleanup (xfree, (char *) self->enumeration[i]); + enumeration[i] = python_string_to_host_string (item.get ()).release (); + if (enumeration[i] == NULL) + return 0; } - discard_cleanups (back_to); + self->enumeration = const_cast<const char**> (holder.release ()); return 1; } |