Commit ac984458 authored by Martin v. Löwis's avatar Martin v. Löwis

Merged revisions 65677-65678,65683 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r65677 | martin.v.loewis | 2008-08-14 17:54:27 +0200 (Do, 14 Aug 2008) | 3 lines

  Make obj an owned reference in Py_buffer; this checkin
  was missing from the patch for #3139.
........
  r65678 | martin.v.loewis | 2008-08-14 17:56:07 +0200 (Do, 14 Aug 2008) | 2 lines

  Properly INCREF reference in Py_buffer.
........
  r65683 | martin.v.loewis | 2008-08-14 22:12:06 +0200 (Do, 14 Aug 2008) | 2 lines

  Fix memory leak: Always DECREF obj in PyBuffer_Release.
........
parent 49843720
...@@ -670,6 +670,8 @@ PyBuffer_FillInfo(Py_buffer *view, PyObject *obj, void *buf, Py_ssize_t len, ...@@ -670,6 +670,8 @@ PyBuffer_FillInfo(Py_buffer *view, PyObject *obj, void *buf, Py_ssize_t len,
} }
view->obj = obj; view->obj = obj;
if (obj)
Py_INCREF(obj);
view->buf = buf; view->buf = buf;
view->len = len; view->len = len;
view->readonly = readonly; view->readonly = readonly;
...@@ -693,11 +695,10 @@ void ...@@ -693,11 +695,10 @@ void
PyBuffer_Release(Py_buffer *view) PyBuffer_Release(Py_buffer *view)
{ {
PyObject *obj = view->obj; PyObject *obj = view->obj;
if (!obj || !Py_TYPE(obj)->tp_as_buffer || !Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer) if (obj && Py_TYPE(obj)->tp_as_buffer && Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer)
/* Unmanaged buffer */ Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer(obj, view);
return; Py_XDECREF(obj);
Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer(obj, view); view->obj = NULL;
} }
PyObject * PyObject *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment