https://github.com/python/cpython/commit/c5fb72ea6ced51a7d20d5b203dc832558d972321
commit: c5fb72ea6ced51a7d20d5b203dc832558d972321
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-09-15T21:25:47+01:00
summary:
gh-129813, PEP 782: Use PyBytesWriter in _winapi.PeekNamedPipe() (#138930)
Replace PyBytes_FromStringAndSize(NULL, size) and _PyBytes_Resize()
with the new public PyBytesWriter API.
files:
M Modules/_winapi.c
diff --git a/Modules/_winapi.c b/Modules/_winapi.c
index b4cfbebcb1bb5e..2aebe44c70921d 100644
--- a/Modules/_winapi.c
+++ b/Modules/_winapi.c
@@ -1920,7 +1920,6 @@ static PyObject *
_winapi_PeekNamedPipe_impl(PyObject *module, HANDLE handle, int size)
/*[clinic end generated code: output=d0c3e29e49d323dd input=c7aa53bfbce69d70]*/
{
- PyObject *buf = NULL;
DWORD nread, navail, nleft;
BOOL ret;
@@ -1930,20 +1929,26 @@ _winapi_PeekNamedPipe_impl(PyObject *module, HANDLE
handle, int size)
}
if (size) {
- buf = PyBytes_FromStringAndSize(NULL, size);
- if (!buf)
+ PyBytesWriter *writer = PyBytesWriter_Create(size);
+ if (writer == NULL) {
return NULL;
+ }
+ char *buf = PyBytesWriter_GetData(writer);
+
Py_BEGIN_ALLOW_THREADS
- ret = PeekNamedPipe(handle, PyBytes_AS_STRING(buf), size, &nread,
+ ret = PeekNamedPipe(handle, buf, size, &nread,
&navail, &nleft);
Py_END_ALLOW_THREADS
if (!ret) {
- Py_DECREF(buf);
+ PyBytesWriter_Discard(writer);
return PyErr_SetExcFromWindowsErr(PyExc_OSError, 0);
}
- if (_PyBytes_Resize(&buf, nread))
+
+ PyObject *res = PyBytesWriter_FinishWithSize(writer, nread);
+ if (res == NULL) {
return NULL;
- return Py_BuildValue("NII", buf, navail, nleft);
+ }
+ return Py_BuildValue("NII", res, navail, nleft);
}
else {
Py_BEGIN_ALLOW_THREADS
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]