@@ -250,7 +250,10 @@ internal static IntPtr ToPython(object value, Type type)
250
250
251
251
IntPtr timeSpanArgs = Runtime . PyTuple_New ( 1 ) ;
252
252
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 ;
254
257
}
255
258
return CLRObject . GetInstHandle ( value , type ) ;
256
259
@@ -312,8 +315,10 @@ internal static IntPtr ToPython(object value, Type type)
312
315
IntPtr d2p = Runtime . PyString_FromString ( d2s ) ;
313
316
IntPtr args = Runtime . PyTuple_New ( 1 ) ;
314
317
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 ;
317
322
318
323
case TypeCode . DateTime :
319
324
var datetime = ( DateTime ) value ;
@@ -327,8 +332,10 @@ internal static IntPtr ToPython(object value, Type type)
327
332
Runtime . PyTuple_SetItem ( dateTimeArgs , 5 , Runtime . PyInt_FromInt32 ( datetime . Second ) ) ;
328
333
Runtime . PyTuple_SetItem ( dateTimeArgs , 6 , Runtime . PyInt_FromInt32 ( datetime . Millisecond ) ) ;
329
334
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 ;
332
339
333
340
334
341
default :
@@ -359,7 +366,9 @@ private static IntPtr TzInfo(DateTimeKind kind)
359
366
IntPtr tzInfoArgs = Runtime . PyTuple_New ( 2 ) ;
360
367
Runtime . PyTuple_SetItem ( tzInfoArgs , 0 , Runtime . PyFloat_FromDouble ( offset . Hours ) ) ;
361
368
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 ;
363
372
}
364
373
365
374
/// <summary>
0 commit comments