Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 74bbea7

Browse files
committed
Merged revisions 65677-65678,65683 via svnmerge from
svn+ssh://[email protected]/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. ........
1 parent 23e3856 commit 74bbea7

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

Objects/abstract.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,8 @@ PyBuffer_FillInfo(Py_buffer *view, PyObject *obj, void *buf, Py_ssize_t len,
670670
}
671671

672672
view->obj = obj;
673+
if (obj)
674+
Py_INCREF(obj);
673675
view->buf = buf;
674676
view->len = len;
675677
view->readonly = readonly;
@@ -693,11 +695,10 @@ void
693695
PyBuffer_Release(Py_buffer *view)
694696
{
695697
PyObject *obj = view->obj;
696-
if (!obj || !Py_TYPE(obj)->tp_as_buffer || !Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer)
697-
/* Unmanaged buffer */
698-
return;
699-
Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer(obj, view);
700-
698+
if (obj && Py_TYPE(obj)->tp_as_buffer && Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer)
699+
Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer(obj, view);
700+
Py_XDECREF(obj);
701+
view->obj = NULL;
701702
}
702703

703704
PyObject *

0 commit comments

Comments
 (0)