@@ -171,9 +171,8 @@ pytomy_timedelta(PyObject *obj)
171
171
{
172
172
int days = 0 , secs = 0 , micro_secs = 0 , total_secs = 0 ;
173
173
int hours = 0 , mins = 0 , remainder = 0 ;
174
- char fmt [32 ]= "" ;
175
- char result [17 ]= "" ;
176
- char minus [1 ]= "" ;
174
+ char fmt [32 ]= {0 };
175
+ char result [17 ]= {0 };
177
176
178
177
PyDateTime_IMPORT ;
179
178
@@ -194,9 +193,11 @@ pytomy_timedelta(PyObject *obj)
194
193
#pragma warning(push)
195
194
// result of strncpy does not accept direct user input
196
195
#pragma warning(disable: 4996)
196
+
197
+
197
198
if (micro_secs )
198
199
{
199
- strncpy (fmt , "%s% 02d:%02d:%02d.%06d" , 21 );
200
+ strncpy (fmt , "%02d:%02d:%02d.%06d" , 19 );
200
201
if (days < 0 )
201
202
{
202
203
micro_secs = 1000000 - micro_secs ;
@@ -205,14 +206,17 @@ pytomy_timedelta(PyObject *obj)
205
206
}
206
207
else
207
208
{
208
- strncpy (fmt , "%s% 02d:%02d:%02d" , 16 );
209
+ strncpy (fmt , "%02d:%02d:%02d" , 14 );
209
210
}
210
- #pragma warning(pop)
211
211
212
212
if (days < 0 )
213
213
{
214
- minus [0 ]= '-' ;
214
+ for (int index = 31 ; index > 0 ; index -- ){
215
+ fmt [index ] = fmt [index - 1 ];
216
+ }
217
+ fmt [0 ] = '-' ;
215
218
}
219
+ #pragma warning(pop)
216
220
217
221
hours = total_secs / 3600 ;
218
222
remainder = total_secs % 3600 ;
@@ -221,11 +225,11 @@ pytomy_timedelta(PyObject *obj)
221
225
222
226
if (micro_secs )
223
227
{
224
- PyOS_snprintf (result , 17 , fmt , minus , hours , mins , secs , micro_secs );
228
+ PyOS_snprintf (result , 17 , fmt , hours , mins , secs , micro_secs );
225
229
}
226
230
else
227
231
{
228
- PyOS_snprintf (result , 17 , fmt , minus , hours , mins , secs );
232
+ PyOS_snprintf (result , 17 , fmt , hours , mins , secs );
229
233
}
230
234
231
235
return PyBytesFromString (result );
@@ -249,7 +253,7 @@ pytomy_timedelta(PyObject *obj)
249
253
PyObject *
250
254
pytomy_time (PyObject * obj )
251
255
{
252
- char result [17 ]= "" ;
256
+ char result [17 ]= { 0 } ;
253
257
254
258
PyDateTime_IMPORT ;
255
259
@@ -297,7 +301,7 @@ pytomy_time(PyObject *obj)
297
301
PyObject *
298
302
pytomy_datetime (PyObject * obj )
299
303
{
300
- char result [27 ]= "" ;
304
+ char result [27 ]= { 0 } ;
301
305
PyDateTime_IMPORT ;
302
306
303
307
if (!obj || !PyDateTime_Check (obj ))
@@ -328,7 +332,6 @@ pytomy_datetime(PyObject *obj)
328
332
PyDateTime_DATE_GET_MINUTE (obj ),
329
333
PyDateTime_DATE_GET_SECOND (obj ));
330
334
}
331
-
332
335
return PyBytesFromString (result );
333
336
}
334
337
0 commit comments