File tree 2 files changed +20
-0
lines changed
2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -36,5 +36,20 @@ public void MoveToPyObject_SetsNull()
36
36
reference . Dispose ( ) ;
37
37
}
38
38
}
39
+
40
+ [ Test ]
41
+ public void CanBorrowFromNewReference ( )
42
+ {
43
+ var dict = new PyDict ( ) ;
44
+ NewReference reference = Runtime . PyDict_Items ( dict . Handle ) ;
45
+ try
46
+ {
47
+ PythonException . ThrowIfIsNotZero ( Runtime . PyList_Reverse ( reference ) ) ;
48
+ }
49
+ finally
50
+ {
51
+ reference . Dispose ( ) ;
52
+ }
53
+ }
39
54
}
40
55
}
Original file line number Diff line number Diff line change @@ -11,6 +11,10 @@ ref struct NewReference
11
11
{
12
12
IntPtr pointer ;
13
13
14
+ [ Pure ]
15
+ public static implicit operator BorrowedReference ( in NewReference reference )
16
+ => new BorrowedReference ( reference . pointer ) ;
17
+
14
18
/// <summary>
15
19
/// Returns <see cref="PyObject"/> wrapper around this reference, which now owns
16
20
/// the pointer. Sets the original reference to <c>null</c>, as it no longer owns it.
@@ -36,6 +40,7 @@ public void Dispose()
36
40
/// <summary>
37
41
/// Creates <see cref="NewReference"/> from a raw pointer
38
42
/// </summary>
43
+ [ Pure ]
39
44
public static NewReference DangerousFromPointer ( IntPtr pointer )
40
45
=> new NewReference { pointer = pointer } ;
41
46
You can’t perform that action at this time.
0 commit comments