https://github.com/python/cpython/commit/719c9dd72f43d81072999f0ded8209c07de7fbd0
commit: 719c9dd72f43d81072999f0ded8209c07de7fbd0
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-01-23T01:18:03+01:00
summary:

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

Replace the private _PyUnicodeWriter API with the public
PyUnicodeWriter API.

files:
M Modules/timemodule.c

diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 340011fc08b551..5d0cd52a93a2d3 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -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;
 }
 

_______________________________________________
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