[Python-checkins] r82207 - in python/branches/release31-maint: Python/getargs.c
victor.stinner
python-checkins at python.org
Fri Jun 25 01:06:25 CEST 2010
Author: victor.stinner
Date: Fri Jun 25 01:06:25 2010
New Revision: 82207
Log:
Issue #8926: getargs.c: release the buffer on error
- "t#" format: don't get the buffer if the object is not a pinned buffer
- getbuffer(): release the buffer on error
(Commit based on r82206 from py3k)
Modified:
python/branches/release31-maint/ (props changed)
python/branches/release31-maint/Python/getargs.c
Modified: python/branches/release31-maint/Python/getargs.c
==============================================================================
--- python/branches/release31-maint/Python/getargs.c (original)
+++ python/branches/release31-maint/Python/getargs.c Fri Jun 25 01:06:25 2010
@@ -1384,6 +1384,10 @@
return converterr(
"bytes or read-only character buffer",
arg, msgbuf, bufsize);
+ if (pb->bf_releasebuffer)
+ return converterr(
+ "string or pinned buffer",
+ arg, msgbuf, bufsize);
if (PyObject_GetBuffer(arg, &view, PyBUF_SIMPLE) != 0)
return converterr("string or single-segment read-only buffer",
@@ -1391,10 +1395,6 @@
count = view.len;
*p = view.buf;
- if (pb->bf_releasebuffer)
- return converterr(
- "string or pinned buffer",
- arg, msgbuf, bufsize);
PyBuffer_Release(&view);
@@ -1460,6 +1460,7 @@
return -1;
}
if (!PyBuffer_IsContiguous(view, 'C')) {
+ PyBuffer_Release(view);
*errmsg = "contiguous buffer";
return -1;
}
More information about the Python-checkins
mailing list