Skip to content

Commit 34c999f

Browse files
committed
Free intermediate objects in _datetimemodule.
1 parent 329db66 commit 34c999f

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

Modules/_datetimemodule.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3268,7 +3268,10 @@ date_fromtimestamp(PyObject *cls, PyObject *obj)
32683268
cls);
32693269
int normalize = 1, negate = 0;
32703270
PyObject *delta = new_delta(0, (int)t, 0, normalize);
3271-
return add_date_timedelta(PyDate_CAST(date), PyDelta_CAST(delta), negate);
3271+
PyObject *result = add_date_timedelta(PyDate_CAST(date), PyDelta_CAST(delta), negate);
3272+
Py_XDECREF(delta);
3273+
Py_XDECREF(date);
3274+
return result;
32723275
}
32733276
#endif
32743277

@@ -5554,10 +5557,13 @@ datetime_from_timestamp(PyObject *cls, TM_FUNC f, PyObject *timestamp,
55545557

55555558
#ifdef MS_WINDOWS
55565559
if (timet < 0) {
5557-
int normalize = 1, factor = 1;
5558-
PyObject *dt = datetime_from_timet_and_us(cls, f, 0, 0, tzinfo);
5559-
PyObject *delta = new_delta(0, (int)timet, us, normalize);
5560-
return add_datetime_timedelta(PyDateTime_CAST(dt), PyDelta_CAST(delta), factor);
5560+
int normalize = 1, factor = 1;
5561+
PyObject *dt = datetime_from_timet_and_us(cls, f, 0, 0, tzinfo);
5562+
PyObject *delta = new_delta(0, (int)timet, us, normalize);
5563+
PyObject *result = add_datetime_timedelta(PyDateTime_CAST(dt), PyDelta_CAST(delta), factor);
5564+
Py_XDECREF(delta);
5565+
Py_XDECREF(dt);
5566+
return result;
55615567
}
55625568
#endif
55635569

0 commit comments

Comments
 (0)