@@ -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