gh-139156: Use PyBytesWriter in _PyUnicode_EncodeCharmap() (#139251)

Replace PyBytes_FromStringAndSize() and _PyBytes_Resize() with the
PyBytesWriter API.

Add _PyBytesWriter_GetSize() and _PyBytesWriter_GetData() static
inline functions.
This commit is contained in:
Victor Stinner 2025-09-24 16:15:34 +02:00 committed by GitHub
parent 06703d6637
commit c9a79a02a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 73 additions and 64 deletions

View file

@ -73,6 +73,26 @@ struct PyBytesWriter {
// Export for '_testcapi' shared extension
PyAPI_FUNC(PyBytesWriter*) _PyBytesWriter_CreateByteArray(Py_ssize_t size);
static inline Py_ssize_t
_PyBytesWriter_GetSize(PyBytesWriter *writer)
{
return writer->size;
}
static inline char*
_PyBytesWriter_GetData(PyBytesWriter *writer)
{
if (writer->obj == NULL) {
return writer->small_buffer;
}
else if (writer->use_bytearray) {
return PyByteArray_AS_STRING(writer->obj);
}
else {
return PyBytes_AS_STRING(writer->obj);
}
}
#ifdef __cplusplus
}
#endif