@@ -3,6 +3,7 @@ use std::ffi::{c_void, CString};
33use std:: mem:: forget;
44use std:: os:: raw:: { c_char, c_int} ;
55use std:: slice:: from_raw_parts;
6+ use std:: sync:: Mutex ;
67
78use num_integer:: gcd;
89use pyo3:: types:: { PyAnyMethods , PyCapsuleMethods } ;
@@ -13,16 +14,12 @@ use crate::array::get_array_module;
1314use crate :: cold;
1415use crate :: error:: BorrowError ;
1516use crate :: npyffi:: { PyArrayObject , PyArray_Check , PyDataType_ELSIZE , NPY_ARRAY_WRITEABLE } ;
16- use parking_lot:: Mutex ;
1717
1818/// Defines the shared C API used for borrow checking
1919///
2020/// This structure will be placed into a capsule at
2121/// `numpy.core.multiarray._RUST_NUMPY_BORROW_CHECKING_API`.
2222///
23- /// All functions exposed here assume the GIL is held
24- /// while they are called.
25- ///
2623/// Versions are assumed to be backwards-compatible, i.e.
2724/// an extension which knows version N will work using
2825/// any API version M as long as M >= N holds.
@@ -257,7 +254,7 @@ struct BorrowFlags(BorrowFlagsInner);
257254
258255impl BorrowFlags {
259256 fn acquire ( & self , address : * mut c_void , key : BorrowKey ) -> Result < ( ) , ( ) > {
260- let mut borrow_flags = self . 0 . lock ( ) ;
257+ let mut borrow_flags = self . 0 . lock ( ) . unwrap ( ) ;
261258
262259 match borrow_flags. entry ( address) {
263260 Entry :: Occupied ( entry) => {
@@ -299,7 +296,7 @@ impl BorrowFlags {
299296 }
300297
301298 fn release ( & self , address : * mut c_void , key : BorrowKey ) {
302- let mut borrow_flags = self . 0 . lock ( ) ;
299+ let mut borrow_flags = self . 0 . lock ( ) . unwrap ( ) ;
303300
304301 let same_base_arrays = borrow_flags. get_mut ( & address) . unwrap ( ) ;
305302 let readers = same_base_arrays. get_mut ( & key) . unwrap ( ) ;
@@ -316,7 +313,7 @@ impl BorrowFlags {
316313 }
317314
318315 fn acquire_mut ( & self , address : * mut c_void , key : BorrowKey ) -> Result < ( ) , ( ) > {
319- let mut borrow_flags = self . 0 . lock ( ) ;
316+ let mut borrow_flags = self . 0 . lock ( ) . unwrap ( ) ;
320317
321318 match borrow_flags. entry ( address) {
322319 Entry :: Occupied ( entry) => {
@@ -352,7 +349,7 @@ impl BorrowFlags {
352349 }
353350
354351 fn release_mut ( & self , address : * mut c_void , key : BorrowKey ) {
355- let mut borrow_flags = self . 0 . lock ( ) ;
352+ let mut borrow_flags = self . 0 . lock ( ) . unwrap ( ) ;
356353
357354 let same_base_arrays = borrow_flags. get_mut ( & address) . unwrap ( ) ;
358355
@@ -781,7 +778,7 @@ mod tests {
781778 let _exclusive1 = array1. readwrite ( ) ;
782779
783780 {
784- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
781+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
785782 #[ cfg( not( Py_GIL_DISABLED ) ) ]
786783 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
787784
@@ -796,7 +793,7 @@ mod tests {
796793 let _shared2 = array2. readonly ( ) ;
797794
798795 {
799- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
796+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
800797 #[ cfg( not( Py_GIL_DISABLED ) ) ]
801798 assert_eq ! ( borrow_flags. len( ) , 2 ) ;
802799
@@ -833,7 +830,7 @@ mod tests {
833830 let exclusive1 = view1. readwrite ( ) ;
834831
835832 {
836- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
833+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
837834 #[ cfg( not( Py_GIL_DISABLED ) ) ]
838835 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
839836
@@ -854,7 +851,7 @@ mod tests {
854851 let shared2 = view2. readonly ( ) ;
855852
856853 {
857- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
854+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
858855 #[ cfg( not( Py_GIL_DISABLED ) ) ]
859856 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
860857
@@ -878,7 +875,7 @@ mod tests {
878875 let shared3 = view3. readonly ( ) ;
879876
880877 {
881- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
878+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
882879 #[ cfg( not( Py_GIL_DISABLED ) ) ]
883880 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
884881
@@ -905,7 +902,7 @@ mod tests {
905902 let shared4 = view4. readonly ( ) ;
906903
907904 {
908- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
905+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
909906 #[ cfg( not( Py_GIL_DISABLED ) ) ]
910907 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
911908
@@ -928,7 +925,7 @@ mod tests {
928925 drop ( shared2) ;
929926
930927 {
931- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
928+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
932929 #[ cfg( not( Py_GIL_DISABLED ) ) ]
933930 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
934931
@@ -951,7 +948,7 @@ mod tests {
951948 drop ( shared3) ;
952949
953950 {
954- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
951+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
955952 #[ cfg( not( Py_GIL_DISABLED ) ) ]
956953 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
957954
@@ -972,7 +969,7 @@ mod tests {
972969 drop ( exclusive1) ;
973970
974971 {
975- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
972+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
976973 #[ cfg( not( Py_GIL_DISABLED ) ) ]
977974 assert_eq ! ( borrow_flags. len( ) , 1 ) ;
978975
@@ -993,7 +990,7 @@ mod tests {
993990
994991 #[ cfg( not( Py_GIL_DISABLED ) ) ]
995992 {
996- let borrow_flags = get_borrow_flags ( py) . lock ( ) ;
993+ let borrow_flags = get_borrow_flags ( py) . lock ( ) . unwrap ( ) ;
997994 assert_eq ! ( borrow_flags. len( ) , 0 ) ;
998995 }
999996 } ) ;
0 commit comments