aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/python.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/python/python.c')
-rw-r--r--gdb/python/python.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 1ed13f2..fb3d975 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -970,22 +970,24 @@ static PyObject *
gdbpy_parse_and_eval (PyObject *self, PyObject *args)
{
const char *expr_str;
- struct value *result = NULL;
if (!PyArg_ParseTuple (args, "s", &expr_str))
return NULL;
+ PyObject *result = nullptr;
try
{
gdbpy_allow_threads allow_threads;
- result = parse_and_eval (expr_str);
+ scoped_value_mark free_values;
+ struct value *val = parse_and_eval (expr_str);
+ result = value_to_value_object (val);
}
catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- return value_to_value_object (result);
+ return result;
}
/* Implementation of gdb.invalidate_cached_frames. */