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]

Reply via email to