Index: Python/getargs.c =================================================================== --- Python/getargs.c (révision 81590) +++ Python/getargs.c (copie de travail) @@ -1375,6 +1375,10 @@ return converterr( "bytes or read-only character buffer", arg, msgbuf, bufsize); + if (pb->bf_releasebuffer != NULL) + 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", @@ -1382,11 +1386,6 @@ count = view.len; *p = view.buf; - if (pb->bf_releasebuffer) - return converterr( - "string or pinned buffer", - arg, msgbuf, bufsize); - PyBuffer_Release(&view); if (count < 0) @@ -1451,6 +1450,7 @@ return -1; } if (!PyBuffer_IsContiguous(view, 'C')) { + PyBuffer_Release(view); *errmsg = "contiguous buffer"; return -1; }