Index: gdb/python/py-inferior.c |
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c |
index 339a22103500121bfd54293e1f1cecdec211044e..2b229beeda6bdad43d75f3513580a09d91a70c68 100644 |
--- a/gdb/python/py-inferior.c |
+++ b/gdb/python/py-inferior.c |
@@ -81,7 +81,7 @@ static void |
python_on_normal_stop (struct bpstats *bs, int print_frame) |
{ |
struct cleanup *cleanup; |
- enum target_signal stop_signal; |
+ enum gdb_signal stop_signal; |
if (!find_thread_ptid (inferior_ptid)) |
return; |
@@ -180,7 +180,6 @@ inferior_to_inferior_object (struct inferior *inferior) |
PyObject * |
find_inferior_object (int pid) |
{ |
- struct inflist_entry *p; |
struct inferior *inf = find_inferior_pid (pid); |
if (inf) |
@@ -257,7 +256,6 @@ delete_thread_object (struct thread_info *tp, int ignore) |
{ |
struct cleanup *cleanup; |
inferior_object *inf_obj; |
- thread_object *thread_obj; |
struct threadlist_entry **entry, *tmp; |
cleanup = ensure_python_env (python_gdbarch, python_language); |
@@ -394,7 +392,7 @@ gdbpy_inferiors (PyObject *unused, PyObject *unused2) |
/* Membuf and memory manipulation. */ |
-/* Implementation of gdb.read_memory (address, length). |
+/* Implementation of Inferior.read_memory (address, length). |
Returns a Python buffer object with LENGTH bytes of the inferior's |
memory at ADDRESS. Both arguments are integers. Returns NULL on error, |
with a python exception set. */ |
@@ -405,8 +403,7 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw) |
CORE_ADDR addr, length; |
void *buffer = NULL; |
membuf_object *membuf_obj; |
- PyObject *addr_obj, *length_obj; |
- struct cleanup *cleanups; |
+ PyObject *addr_obj, *length_obj, *result; |
volatile struct gdb_exception except; |
static char *keywords[] = { "address", "length", NULL }; |
@@ -414,8 +411,6 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw) |
&addr_obj, &length_obj)) |
return NULL; |
- cleanups = make_cleanup (null_cleanup, NULL); |
- |
TRY_CATCH (except, RETURN_MASK_ALL) |
{ |
if (!get_addr_from_python (addr_obj, &addr) |
@@ -426,42 +421,41 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw) |
} |
buffer = xmalloc (length); |
- make_cleanup (xfree, buffer); |
read_memory (addr, buffer, length); |
} |
if (except.reason < 0) |
{ |
- do_cleanups (cleanups); |
+ xfree (buffer); |
GDB_PY_HANDLE_EXCEPTION (except); |
} |
if (error) |
{ |
- do_cleanups (cleanups); |
+ xfree (buffer); |
return NULL; |
} |
membuf_obj = PyObject_New (membuf_object, &membuf_object_type); |
if (membuf_obj == NULL) |
{ |
+ xfree (buffer); |
PyErr_SetString (PyExc_MemoryError, |
_("Could not allocate memory buffer object.")); |
- do_cleanups (cleanups); |
return NULL; |
} |
- discard_cleanups (cleanups); |
- |
membuf_obj->buffer = buffer; |
membuf_obj->addr = addr; |
membuf_obj->length = length; |
- return PyBuffer_FromReadWriteObject ((PyObject *) membuf_obj, 0, |
- Py_END_OF_BUFFER); |
+ result = PyBuffer_FromReadWriteObject ((PyObject *) membuf_obj, 0, |
+ Py_END_OF_BUFFER); |
+ Py_DECREF (membuf_obj); |
+ return result; |
} |
-/* Implementation of gdb.write_memory (address, buffer [, length]). |
+/* Implementation of Inferior.write_memory (address, buffer [, length]). |
Writes the contents of BUFFER (a Python object supporting the read |
buffer protocol) at ADDRESS in the inferior's memory. Write LENGTH |
bytes from BUFFER, or its entire contents if the argument is not |
@@ -499,7 +493,7 @@ infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw) |
error = 1; |
break; |
} |
- write_memory (addr, buffer, length); |
+ write_memory_with_notification (addr, buffer, length); |
} |
GDB_PY_HANDLE_EXCEPTION (except); |