https://github.com/python/cpython/commit/77a22ef76aee9a5782d31c118dba27d29fe5a84a
commit: 77a22ef76aee9a5782d31c118dba27d29fe5a84a
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-09-17T17:44:13+02:00
summary:
gh-129813, PEP 782: Use PyBytesWriter in _multiprocessing (#139047)
Replace PyBytes_FromStringAndSize(NULL, size) and _PyBytes_Resize()
with the new public PyBytesWriter API.
Change also 'read' variable type from int to Py_ssize_t.
files:
M Modules/_multiprocessing/multiprocessing.c
diff --git a/Modules/_multiprocessing/multiprocessing.c
b/Modules/_multiprocessing/multiprocessing.c
index cee8cf7b9a83c0..848784dedc1702 100644
--- a/Modules/_multiprocessing/multiprocessing.c
+++ b/Modules/_multiprocessing/multiprocessing.c
@@ -109,23 +109,22 @@ static PyObject *
_multiprocessing_recv_impl(PyObject *module, HANDLE handle, int size)
/*[clinic end generated code: output=92322781ba9ff598 input=6a5b0834372cee5b]*/
{
- int nread;
- PyObject *buf;
-
- buf = PyBytes_FromStringAndSize(NULL, size);
- if (!buf)
+ PyBytesWriter *writer = PyBytesWriter_Create(size);
+ if (!writer) {
return NULL;
+ }
+ char *buf = PyBytesWriter_GetData(writer);
+ Py_ssize_t nread;
Py_BEGIN_ALLOW_THREADS
- nread = recv((SOCKET) handle, PyBytes_AS_STRING(buf), size, 0);
+ nread = recv((SOCKET) handle, buf, size, 0);
Py_END_ALLOW_THREADS
if (nread < 0) {
- Py_DECREF(buf);
+ PyBytesWriter_Discard(writer);
return PyErr_SetExcFromWindowsErr(PyExc_OSError, WSAGetLastError());
}
- _PyBytes_Resize(&buf, nread);
- return buf;
+ return PyBytesWriter_FinishWithSize(writer, nread);
}
/*[clinic input]
_______________________________________________
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]