@@ -1921,6 +1921,7 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
19211921 PyObject * colonzreplacement = NULL ; /* py string, replacement for %:z */
19221922 PyObject * Zreplacement = NULL ; /* py string, replacement for %Z */
19231923 PyObject * freplacement = NULL ; /* py string, replacement for %f */
1924+ PyObject * dash_replacement = NULL ; /* py string, replacement for %- */
19241925
19251926 assert (object && format && timetuple );
19261927 assert (PyUnicode_Check (format ));
@@ -2058,13 +2059,12 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
20582059 Py_UCS4 next_ch = PyUnicode_READ_CHAR (format , i );
20592060 i ++ ;
20602061
2061- PyObject * tmp = make_dash_replacement (object , next_ch , timetuple );
2062- if (tmp == NULL ) {
2062+ Py_XDECREF (dash_replacement );
2063+ dash_replacement = make_dash_replacement (object , next_ch , timetuple );
2064+ if (dash_replacement == NULL ) {
20632065 goto Error ;
20642066 }
2065-
2066- replacement = tmp ;
2067- need_decref_replacement = 1 ;
2067+ replacement = dash_replacement ;
20682068 }
20692069 #endif
20702070 else {
@@ -2074,21 +2074,12 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
20742074 assert (replacement != NULL );
20752075 assert (PyUnicode_Check (replacement ));
20762076 if (PyUnicodeWriter_WriteSubstring (writer , format , start , end ) < 0 ) {
2077- if (need_decref_replacement ) {
2078- Py_DECREF (replacement );
2079- }
20802077 goto Error ;
20812078 }
20822079 start = i ;
20832080 if (PyUnicodeWriter_WriteStr (writer , replacement ) < 0 ) {
2084- if (need_decref_replacement ) {
2085- Py_DECREF (replacement );
2086- }
20872081 goto Error ;
20882082 }
2089- if (need_decref_replacement ) {
2090- Py_DECREF (replacement );
2091- }
20922083 } /* end while() */
20932084
20942085 PyObject * newformat ;
@@ -2115,6 +2106,7 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
21152106 Py_XDECREF (colonzreplacement );
21162107 Py_XDECREF (Zreplacement );
21172108 Py_XDECREF (strftime );
2109+ Py_XDECREF (dash_replacement );
21182110 return result ;
21192111
21202112 Error :
0 commit comments