Skip to content

Commit 9b5445e

Browse files
committed
Reflect PR #14
1 parent 5ed5a96 commit 9b5445e

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/runtime/converter.cs

+15-6
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)