8000 fixed accidental premature disposal of Runtime.PyNone · pythonnet/pythonnet@7167229 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7167229

Browse files
committed
fixed accidental premature disposal of Runtime.PyNone
1 parent a8ef06c commit 7167229

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

src/runtime/classbase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ public static NewReference tp_richcompare(BorrowedReference ob, BorrowedReferenc
112112
{
113113
case Runtime.Py_EQ:
114114
case Runtime.Py_NE:
115-
PyObject pytrue = Runtime.PyTrue;
116-
PyObject pyfalse = Runtime.PyFalse;
115+
BorrowedReference pytrue = Runtime.PyTrue;
116+
BorrowedReference pyfalse = Runtime.PyFalse;
117117

118118
// swap true and false for NE
119119
if (op != Runtime.Py_EQ)
@@ -163,7 +163,7 @@ public static NewReference tp_richcompare(BorrowedReference ob, BorrowedReferenc
163163
{
164164
int cmp = co1Comp.CompareTo(co2.inst);
165165

166-
PyObject pyCmp;
166+
BorrowedReference pyCmp;
167167
if (cmp < 0)
168168
{
169169
if (op == Runtime.Py_LT || op == Runtime.Py_LE)

src/runtime/classderived.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ public static T InvokeMethod<T>(IPythonDerivedType obj, string methodName, strin
664664
try
665665
{
666666
using var pyself = new PyObject(self.CheckRun());
667-
using PyObject method = pyself.GetAttr(methodName, Runtime.PyNone);
667+
using PyObject method = pyself.GetAttr(methodName, Runtime.None);
668668
if (method.Reference != Runtime.PyNone)
669669
{
670670
// if the method hasn't been overridden then it will be a managed object
@@ -717,9 +717,9 @@ public static void InvokeMethodVoid(IPythonDerivedType obj, string methodName, s
717717
try
718718
{
719719
using var pyself = new PyObject(self.CheckRun());
720-
PyObject method = pyself.GetAttr(methodName, Runtime.PyNone);
720+
PyObject method = pyself.GetAttr(methodName, Runtime.None);
721721
disposeList.Add(method);
722-
if (method.Reference != Runtime.PyNone)
722+
if (method.Reference != Runtime.None)
723723
{
724724
// if the method hasn't been overridden then it will be a managed object
725725
ManagedType? managedMethod = ManagedType.GetManagedObject(method);

src/runtime/runtime.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,12 @@ private static void InitPyMembers()
209209

210210
SetPyMember(out PyBaseObjectType, PyObject_GetAttrString(builtins, "object").StealNullable());
211211

212-
SetPyMember(out PyNone, PyObject_GetAttrString(builtins, "None").StealNullable());
213-
SetPyMember(out PyTrue, PyObject_GetAttrString(builtins, "True").StealNullable());
214-
SetPyMember(out PyFalse, PyObject_GetAttrString(builtins, "False").StealNullable());
212+
SetPyMember(out _PyNone, PyObject_GetAttrString(builtins, "None").StealNullable());
213+
SetPyMember(out _PyTrue, PyObject_GetAttrString(builtins, "True").StealNullable());
214+
SetPyMember(out _PyFalse, PyObject_GetAttrString(builtins, "False").StealNullable());
215215

216-
SetPyMemberTypeOf(out PyBoolType, PyTrue!);
217-
SetPyMemberTypeOf(out PyNoneType, PyNone!);
216+
SetPyMemberTypeOf(out PyBoolType, _PyTrue!);
217+
SetPyMemberTypeOf(out PyNoneType, _PyNone!);
218218

219219
SetPyMemberTypeOf(out PyMethodType, PyObject_GetAttrString(builtins, "len").StealNullable());
220220

@@ -598,9 +598,12 @@ private static void MoveClrInstancesOnwershipToPython()
598598
internal const int Py_GT = 4;
599599
internal const int Py_GE = 5;
600600

601-
internal static PyObject PyTrue;
602-
internal static PyObject PyFalse;
603-
internal static PyObject PyNone;
601+
internal static BorrowedReference PyTrue => _PyTrue;
602+
static PyObject _PyTrue;
603+
internal static BorrowedReference PyFalse => _PyFalse;
604+
static PyObject _PyFalse;
605+
internal static BorrowedReference PyNone => _PyNone;
606+
private static PyObject _PyNone;
604607

605608
private static Lazy<PyObject> inspect;
606609
internal static PyObject InspectModule => inspect.Value;
@@ -610,7 +613,7 @@ private static void MoveClrInstancesOnwershipToPython()
610613

611614
internal static BorrowedReference CLRMetaType => PyCLRMetaType;
612615

613-
public static PyObject None => new(PyNone);
616+
public static PyObject None => new(_PyNone);
614617

615618
/// <summary>
616619
/// Check if any Python Exceptions occurred.

0 commit comments

Comments
 (0)
0