gh-119182: Use public PyUnicodeWriter in time_strftime() (#129207)

Replace the private _PyUnicodeWriter API with the public
PyUnicodeWriter API.
This commit is contained in:
Victor Stinner 2025-01-23 01:18:03 +01:00 committed by GitHub
parent 960936fe90
commit 719c9dd72f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -913,9 +913,10 @@ time_strftime(PyObject *module, PyObject *args)
PyErr_NoMemory();
return NULL;
}
_PyUnicodeWriter writer;
_PyUnicodeWriter_Init(&writer);
writer.overallocate = 1;
PyUnicodeWriter *writer = PyUnicodeWriter_Create(0);
if (writer == NULL) {
goto error;
}
Py_ssize_t i = 0;
while (i < format_size) {
fmtlen = 0;
@ -933,7 +934,7 @@ time_strftime(PyObject *module, PyObject *args)
if (unicode == NULL) {
goto error;
}
if (_PyUnicodeWriter_WriteStr(&writer, unicode) < 0) {
if (PyUnicodeWriter_WriteStr(writer, unicode) < 0) {
Py_DECREF(unicode);
goto error;
}
@ -947,18 +948,18 @@ time_strftime(PyObject *module, PyObject *args)
break;
}
}
if (_PyUnicodeWriter_WriteSubstring(&writer, format_arg, start, i) < 0) {
if (PyUnicodeWriter_WriteSubstring(writer, format_arg, start, i) < 0) {
goto error;
}
}
PyMem_Free(outbuf);
PyMem_Free(format);
return _PyUnicodeWriter_Finish(&writer);
return PyUnicodeWriter_Finish(writer);
error:
PyMem_Free(outbuf);
PyMem_Free(format);
_PyUnicodeWriter_Dealloc(&writer);
PyUnicodeWriter_Discard(writer);
return NULL;
}