8000 added a few debug guards · pythonnet/pythonnet@70b684a · GitHub
[go: up one dir, main page]

Skip to content

Commit 70b684a

Browse files
committed
added a few debug guards
1 parent 832126c commit 70b684a

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/runtime/managedtype.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,23 @@ internal enum TrackTypes
2828
internal IntPtr pyHandle; // PyObject *
2929
internal IntPtr tpHandle; // PyType *
3030

31-
internal BorrowedReference ObjectReference => new(pyHandle);
32-
internal BorrowedReference TypeReference => new(tpHandle);
31+
internal BorrowedReference ObjectReference
32+
{
33+
get
34+
{
35+
Debug.Assert(pyHandle != IntPtr.Zero);
36+
return new(pyHandle);
37+
}
38+
}
39+
40+
internal BorrowedReference TypeReference
41+
{
42+
get
43+
{
44+
Debug.Assert(tpHandle != IntPtr.Zero);
45+
return new(tpHandle);
46+
}
47+
}
3348

3449
private static readonly Dictionary<ManagedType, TrackTypes> _managedObjs = new Dictionary<ManagedType, TrackTypes>();
3550

@@ -310,6 +325,8 @@ internal static void InitGCHandle(BorrowedReference reflectedClrObject, GCHandle
310325

311326
internal static void SetGCHandle(BorrowedReference reflectedClrObject, BorrowedReference type, GCHandle newHandle)
312327
{
328+
Debug.Assert(type != null);
329+
Debug.Assert(reflectedClrObject != null);
313330
Debug.Assert(Runtime.PyObject_TypeCheck(reflectedClrObject, type));
314331

315332
int offset = Marshal.ReadInt32(type.DangerousGetAddress(), Offsets.tp_clr_inst_offset);

src/runtime/runtime.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2021,7 +2021,11 @@ internal static bool PyType_Check(IntPtr ob)
20212021
internal static void PyType_Modified(BorrowedReference type) => Delegates.PyType_Modified(type);
20222022
internal static bool PyType_IsSubtype(BorrowedReference t1, IntPtr ofType)
20232023
=> PyType_IsSubtype(t1, new BorrowedReference(ofType));
2024-
internal static bool PyType_IsSubtype(BorrowedReference t1, BorrowedReference t2) => Delegates.PyType_IsSubtype(t1, t2);
2024+
internal static bool PyType_IsSubtype(BorrowedReference t1, BorrowedReference t2)
2025+
{
2026+
Debug.Assert(t1 != null && t2 != null);
2027+
return Delegates.PyType_IsSubtype(t1, t2);
2028+
}
20252029

20262030
internal static bool PyObject_TypeCheck(IntPtr ob, IntPtr tp)
20272031
=> PyObject_TypeCheck(new BorrowedReference(ob), new BorrowedReference(tp));

0 commit comments

Comments
 (0)
0