@@ -250,7 +250,10 @@ internal static IntPtr ToPython(object value, Type type)
250250
251251 IntPtr timeSpanArgs = Runtime . PyTuple_New ( 1 ) ;
252252 Runtime . PyTuple_SetItem ( timeSpanArgs , 0 , Runtime . PyFloat_FromDouble ( timespan . TotalDays ) ) ;
253- return Runtime . PyObject_CallObject ( timeSpanCtor , timeSpanArgs ) ;
253+ var returnTimeSpan = Runtime . PyObject_CallObject ( timeSpanCtor , timeSpanArgs ) ;
254+ // clean up
255+ Runtime . XDecref ( timeSpanArgs ) ;
256+ return returnTimeSpan ;
254257 }
255258 return CLRObject . GetInstHandle ( value , type ) ;
256259
@@ -312,8 +315,10 @@ internal static IntPtr ToPython(object value, Type type)
312315 IntPtr d2p = Runtime . PyString_FromString ( d2s ) ;
313316 IntPtr args = Runtime . PyTuple_New ( 1 ) ;
314317 Runtime . PyTuple_SetItem ( args , 0 , d2p ) ;
315-
316- return Runtime . PyObject_CallObject ( decimalCtor , args ) ;
318+ var returnDecimal = Runtime . PyObject_CallObject ( decimalCtor , args ) ;
319+ // clean up
320+ Runtime . XDecref ( args ) ;
321+ return returnDecimal ;
317322
318323 case TypeCode . DateTime :
319324 var datetime = ( DateTime ) value ;
@@ -327,8 +332,10 @@ internal static IntPtr ToPython(object value, Type type)
327332 Runtime . PyTuple_SetItem ( dateTimeArgs , 5 , Runtime . PyInt_FromInt32 ( datetime . Second ) ) ;
328333 Runtime . PyTuple_SetItem ( dateTimeArgs , 6 , Runtime . PyInt_FromInt32 ( datetime . Millisecond ) ) ;
329334 Runtime . PyTuple_SetItem ( dateTimeArgs , 7 , TzInfo ( datetime . Kind ) ) ;
330-
331- return Runtime . PyObject_CallObject ( dateTimeCtor , dateTimeArgs ) ;
335+ var returnDateTime = Runtime . PyObject_CallObject ( dateTimeCtor , dateTimeArgs ) ;
336+ // clean up
337+ Runtime . XDecref ( dateTimeArgs ) ;
338+ return returnDateTime ;
332339
333340
334341 default :
@@ -359,7 +366,9 @@ private static IntPtr TzInfo(DateTimeKind kind)
359366 IntPtr tzInfoArgs = Runtime . PyTuple_New ( 2 ) ;
360367 Runtime . PyTuple_SetItem ( tzInfoArgs , 0 , Runtime . PyFloat_FromDouble ( offset . Hours ) ) ;
361368 Runtime . PyTuple_SetItem ( tzInfoArgs , 1 , Runtime . PyFloat_FromDouble ( offset . Minutes ) ) ;
362- return Runtime . PyObject_CallObject ( tzInfoCtor , tzInfoArgs ) ;
369+ var returnValue = Runtime . PyObject_CallObject ( tzInfoCtor , tzInfoArgs ) ;
370+ Runtime . XDecref ( tzInfoArgs ) ;
371+ return returnValue ;
363372 }
364373
365374 /// <summary>
0 commit comments