This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFA 03/11] Use gdbpy_enter in py-param.c
- From: Tom Tromey <tom at tromey dot com>
- To: gdb-patches at sourceware dot org
- Cc: Tom Tromey <tom at tromey dot com>
- Date: Sat, 12 Nov 2016 14:28:37 -0700
- Subject: [RFA 03/11] Use gdbpy_enter in py-param.c
- Authentication-results: sourceware.org; auth=none
- References: <1478986125-15122-1-git-send-email-tom@tromey.com>
This converts the remaining functions in py-param.c to use
gdbpy_enter.
2016-11-12 Tom Tromey <tom@tromey.com>
* python/py-param.c (get_set_value, get_show_value): Use
gdbpy_enter, gdbpy_ref.
---
gdb/ChangeLog | 5 ++++
gdb/python/py-param.c | 75 ++++++++++++++++++++++++---------------------------
2 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1a7e8e2..fe7da49 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2016-11-12 Tom Tromey <tom@tromey.com>
+ * python/py-param.c (get_set_value, get_show_value): Use
+ gdbpy_enter, gdbpy_ref.
+
+2016-11-12 Tom Tromey <tom@tromey.com>
+
* python/py-function.c (fnpy_call): Use gdbpy_enter, gdbpy_ref.
2016-11-12 Tom Tromey <tom@tromey.com>
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index 026fa67..d402928 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -363,18 +363,24 @@ get_set_value (char *args, int from_tty,
{
PyObject *obj = (PyObject *) get_cmd_context (c);
gdb::unique_xmalloc_ptr<char> set_doc_string;
- struct cleanup *cleanup = ensure_python_env (get_current_arch (),
- current_language);
- PyObject *set_doc_func = PyString_FromString ("get_set_string");
- if (! set_doc_func)
- goto error;
+ gdbpy_enter enter_py (get_current_arch (), current_language);
+ gdbpy_ref set_doc_func (PyString_FromString ("get_set_string"));
- if (PyObject_HasAttr (obj, set_doc_func))
+ if (set_doc_func == NULL)
{
- set_doc_string = call_doc_function (obj, set_doc_func, NULL);
+ gdbpy_print_stack ();
+ return;
+ }
+
+ if (PyObject_HasAttr (obj, set_doc_func.get ()))
+ {
+ set_doc_string = call_doc_function (obj, set_doc_func.get (), NULL);
if (! set_doc_string)
- goto error;
+ {
+ gdbpy_print_stack ();
+ return;
+ }
}
else
{
@@ -385,16 +391,6 @@ get_set_value (char *args, int from_tty,
}
fprintf_filtered (gdb_stdout, "%s\n", set_doc_string.get ());
-
- Py_XDECREF (set_doc_func);
- do_cleanups (cleanup);
- return;
-
- error:
- Py_XDECREF (set_doc_func);
- gdbpy_print_stack ();
- do_cleanups (cleanup);
- return;
}
/* A callback function that is registered against the respective
@@ -410,24 +406,33 @@ get_show_value (struct ui_file *file, int from_tty,
{
PyObject *obj = (PyObject *) get_cmd_context (c);
gdb::unique_xmalloc_ptr<char> show_doc_string;
- struct cleanup *cleanup = ensure_python_env (get_current_arch (),
- current_language);
- PyObject *show_doc_func = PyString_FromString ("get_show_string");
- if (! show_doc_func)
- goto error;
+ gdbpy_enter enter_py (get_current_arch (), current_language);
+ gdbpy_ref show_doc_func (PyString_FromString ("get_show_string"));
+
+ if (show_doc_func == NULL)
+ {
+ gdbpy_print_stack ();
+ return;
+ }
- if (PyObject_HasAttr (obj, show_doc_func))
+ if (PyObject_HasAttr (obj, show_doc_func.get ()))
{
- PyObject *val_obj = PyString_FromString (value);
+ gdbpy_ref val_obj (PyString_FromString (value));
- if (! val_obj)
- goto error;
+ if (val_obj == NULL)
+ {
+ gdbpy_print_stack ();
+ return;
+ }
- show_doc_string = call_doc_function (obj, show_doc_func, val_obj);
- Py_DECREF (val_obj);
+ show_doc_string = call_doc_function (obj, show_doc_func.get (),
+ val_obj.get ());
if (! show_doc_string)
- goto error;
+ {
+ gdbpy_print_stack ();
+ return;
+ }
fprintf_filtered (file, "%s\n", show_doc_string.get ());
}
@@ -439,16 +444,6 @@ get_show_value (struct ui_file *file, int from_tty,
show_doc_string = get_doc_string (obj, show_doc_cst);
fprintf_filtered (file, "%s %s\n", show_doc_string.get (), value);
}
-
- Py_XDECREF (show_doc_func);
- do_cleanups (cleanup);
- return;
-
- error:
- Py_XDECREF (show_doc_func);
- gdbpy_print_stack ();
- do_cleanups (cleanup);
- return;
}
--
2.7.4