| 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); | 
|  | 
|  |