aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Modules/_datetimemodule.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index cf8bd60f3e3..ff2e6d6a098 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -1849,9 +1849,10 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
* is expensive, don't unless they're actually used.
*/
- _PyUnicodeWriter writer;
- _PyUnicodeWriter_Init(&writer);
- writer.overallocate = 1;
+ PyUnicodeWriter *writer = PyUnicodeWriter_Create(0);
+ if (writer == NULL) {
+ goto Error;
+ }
Py_ssize_t flen = PyUnicode_GET_LENGTH(format);
Py_ssize_t i = 0;
@@ -1955,11 +1956,11 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
if (ch == 'C') {
n -= 2;
}
- if (_PyUnicodeWriter_WriteSubstring(&writer, format, start, end) < 0) {
+ if (PyUnicodeWriter_WriteSubstring(writer, format, start, end) < 0) {
goto Error;
}
start = i;
- if (_PyUnicodeWriter_WriteASCIIString(&writer, buf, n) < 0) {
+ if (PyUnicodeWriter_WriteUTF8(writer, buf, n) < 0) {
goto Error;
}
continue;
@@ -1971,25 +1972,25 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
}
assert(replacement != NULL);
assert(PyUnicode_Check(replacement));
- if (_PyUnicodeWriter_WriteSubstring(&writer, format, start, end) < 0) {
+ if (PyUnicodeWriter_WriteSubstring(writer, format, start, end) < 0) {
goto Error;
}
start = i;
- if (_PyUnicodeWriter_WriteStr(&writer, replacement) < 0) {
+ if (PyUnicodeWriter_WriteStr(writer, replacement) < 0) {
goto Error;
}
} /* end while() */
PyObject *newformat;
if (start == 0) {
- _PyUnicodeWriter_Dealloc(&writer);
+ PyUnicodeWriter_Discard(writer);
newformat = Py_NewRef(format);
}
else {
- if (_PyUnicodeWriter_WriteSubstring(&writer, format, start, flen) < 0) {
+ if (PyUnicodeWriter_WriteSubstring(writer, format, start, flen) < 0) {
goto Error;
}
- newformat = _PyUnicodeWriter_Finish(&writer);
+ newformat = PyUnicodeWriter_Finish(writer);
if (newformat == NULL) {
goto Done;
}
@@ -2007,7 +2008,7 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
return result;
Error:
- _PyUnicodeWriter_Dealloc(&writer);
+ PyUnicodeWriter_Discard(writer);
goto Done;
}