gh-129813, PEP 782: Use PyBytesWriter in _testclinic (#139048)

Replace PyBytes_FromStringAndSize(NULL, size) with the new public
PyBytesWriter API.
This commit is contained in:
Victor Stinner 2025-09-17 16:55:30 +01:00 committed by GitHub
parent 8eb106240f
commit 82e1920a01
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -663,16 +663,16 @@ str_converter_encoding_impl(PyObject *module, char *a, char *b, char *c,
static PyObject *
bytes_from_buffer(Py_buffer *buf)
{
PyObject *bytes_obj = PyBytes_FromStringAndSize(NULL, buf->len);
if (!bytes_obj) {
PyBytesWriter *writer = PyBytesWriter_Create(buf->len);
if (writer == NULL) {
return NULL;
}
void *bytes_obj_buf = ((PyBytesObject *)bytes_obj)->ob_sval;
if (PyBuffer_ToContiguous(bytes_obj_buf, buf, buf->len, 'C') < 0) {
Py_DECREF(bytes_obj);
void *data = PyBytesWriter_GetData(writer);
if (PyBuffer_ToContiguous(data, buf, buf->len, 'C') < 0) {
PyBytesWriter_Discard(writer);
return NULL;
}
return bytes_obj;
return PyBytesWriter_Finish(writer);
}
/*[clinic input]