@@ -45,25 +45,25 @@ mod tests {
4545 unsafe {
4646 // Test with different types and sizes
4747 let small_array: Vec < u32 > = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
48- let small_ffi = FFIArray :: new ( small_array) ;
48+ let mut small_ffi = FFIArray :: new ( small_array) ;
4949 assert ! ( !small_ffi. data. is_null( ) ) ;
5050 assert_eq ! ( small_ffi. len, 5 ) ;
51- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( small_ffi) ) ) ;
51+ dash_spv_ffi_array_destroy ( & mut small_ffi as * mut FFIArray ) ;
5252
5353 // Test with large array
5454 let large_array: Vec < u64 > = ( 0 ..100_000 ) . collect ( ) ;
55- let large_ffi = FFIArray :: new ( large_array) ;
55+ let mut large_ffi = FFIArray :: new ( large_array) ;
5656 assert ! ( !large_ffi. data. is_null( ) ) ;
5757 assert_eq ! ( large_ffi. len, 100_000 ) ;
58- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( large_ffi) ) ) ;
58+ dash_spv_ffi_array_destroy ( & mut large_ffi as * mut FFIArray ) ;
5959
6060 // Test with empty array
6161 let empty_array: Vec < u8 > = vec ! [ ] ;
62- let empty_ffi = FFIArray :: new ( empty_array) ;
62+ let mut empty_ffi = FFIArray :: new ( empty_array) ;
6363 // Even empty arrays have valid pointers
6464 assert ! ( !empty_ffi. data. is_null( ) ) ;
6565 assert_eq ! ( empty_ffi. len, 0 ) ;
66- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( empty_ffi) ) ) ;
66+ dash_spv_ffi_array_destroy ( & mut empty_ffi as * mut FFIArray ) ;
6767 }
6868 }
6969
@@ -125,12 +125,12 @@ mod tests {
125125 // Each thread creates and destroys arrays
126126 for j in 0 ..50 {
127127 let array: Vec < u32 > = ( 0 ..j * 10 ) . collect ( ) ;
128- let ffi_array = FFIArray :: new ( array) ;
128+ let mut ffi_array = FFIArray :: new ( array) ;
129129
130130 // Simulate some work
131131 thread:: sleep ( Duration :: from_micros ( 10 ) ) ;
132132
133- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( ffi_array) ) ) ;
133+ dash_spv_ffi_array_destroy ( & mut ffi_array as * mut FFIArray ) ;
134134 }
135135 }
136136 } ) ;
@@ -163,11 +163,11 @@ mod tests {
163163
164164 // Array allocation
165165 let large_array: Vec < u8 > = vec ! [ 0xFF ; size] ;
166- let ffi_array = FFIArray :: new ( large_array) ;
166+ let mut ffi_array = FFIArray :: new ( large_array) ;
167167 assert ! ( !ffi_array. data. is_null( ) ) ;
168168 assert_eq ! ( ffi_array. len, size) ;
169169
170- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( ffi_array) ) ) ;
170+ dash_spv_ffi_array_destroy ( & mut ffi_array as * mut FFIArray ) ;
171171 }
172172 }
173173 }
@@ -192,18 +192,18 @@ mod tests {
192192 dash_spv_ffi_string_destroy ( null_string) ;
193193
194194 // Test with array
195- let ffi_array = FFIArray :: new ( vec ! [ 1u32 , 2 , 3 ] ) ;
196- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( ffi_array) ) ) ;
195+ let mut ffi_array = FFIArray :: new ( vec ! [ 1u32 , 2 , 3 ] ) ;
196+ dash_spv_ffi_array_destroy ( & mut ffi_array as * mut FFIArray ) ;
197197
198198 // Destroying with null should be safe
199- let null_array = FFIArray {
199+ let mut null_array = FFIArray {
200200 data : std:: ptr:: null_mut ( ) ,
201201 len : 0 ,
202202 capacity : 0 ,
203203 elem_size : 0 ,
204204 elem_align : 1 ,
205205 } ;
206- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( null_array) ) ) ;
206+ dash_spv_ffi_array_destroy ( & mut null_array as * mut FFIArray ) ;
207207 }
208208 }
209209
@@ -215,21 +215,21 @@ mod tests {
215215
216216 // u8 - 1 byte alignment
217217 let u8_array = vec ! [ 1u8 , 2 , 3 , 4 ] ;
218- let u8_ffi = FFIArray :: new ( u8_array) ;
218+ let mut u8_ffi = FFIArray :: new ( u8_array) ;
219219 assert_eq ! ( u8_ffi. data as usize % std:: mem:: align_of:: <u8 >( ) , 0 ) ;
220- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( u8_ffi) ) ) ;
220+ dash_spv_ffi_array_destroy ( & mut u8_ffi as * mut FFIArray ) ;
221221
222222 // u32 - 4 byte alignment
223223 let u32_array = vec ! [ 1u32 , 2 , 3 , 4 ] ;
224- let u32_ffi = FFIArray :: new ( u32_array) ;
224+ let mut u32_ffi = FFIArray :: new ( u32_array) ;
225225 assert_eq ! ( u32_ffi. data as usize % std:: mem:: align_of:: <u32 >( ) , 0 ) ;
226- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( u32_ffi) ) ) ;
226+ dash_spv_ffi_array_destroy ( & mut u32_ffi as * mut FFIArray ) ;
227227
228228 // u64 - 8 byte alignment
229229 let u64_array = vec ! [ 1u64 , 2 , 3 , 4 ] ;
230- let u64_ffi = FFIArray :: new ( u64_array) ;
230+ let mut u64_ffi = FFIArray :: new ( u64_array) ;
231231 assert_eq ! ( u64_ffi. data as usize % std:: mem:: align_of:: <u64 >( ) , 0 ) ;
232- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( u64_ffi) ) ) ;
232+ dash_spv_ffi_array_destroy ( & mut u64_ffi as * mut FFIArray ) ;
233233 }
234234 }
235235
@@ -341,10 +341,10 @@ mod tests {
341341
342342 // Empty array
343343 let empty_vec: Vec < u8 > = vec ! [ ] ;
344- let empty_array = FFIArray :: new ( empty_vec) ;
344+ let mut empty_array = FFIArray :: new ( empty_vec) ;
345345 assert ! ( !empty_array. data. is_null( ) ) ;
346346 assert_eq ! ( empty_array. len, 0 ) ;
347- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( empty_array) ) ) ;
347+ dash_spv_ffi_array_destroy ( & mut empty_array as * mut FFIArray ) ;
348348 }
349349 }
350350
@@ -407,8 +407,8 @@ mod tests {
407407 dash_spv_ffi_string_destroy ( s) ;
408408 }
409409
410- for a in arrays {
411- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( a ) ) ) ;
410+ for mut a in arrays {
411+ dash_spv_ffi_array_destroy ( & mut a as * mut FFIArray ) ;
412412 }
413413
414414 cycle += 1 ;
@@ -424,7 +424,7 @@ mod tests {
424424 // Test that memory allocated in one thread can be safely used in another
425425 unsafe {
426426 let string = FFIString :: new ( "Allocated in thread 1" ) ;
427- let array = FFIArray :: new ( vec ! [ 1u32 , 2 , 3 , 4 , 5 ] ) ;
427+ let mut array = FFIArray :: new ( vec ! [ 1u32 , 2 , 3 , 4 , 5 ] ) ;
428428
429429 // Verify we can read the data
430430 let s = FFIString :: from_ptr ( string. ptr ) . unwrap ( ) ;
@@ -435,7 +435,7 @@ mod tests {
435435
436436 // Clean up
437437 dash_spv_ffi_string_destroy ( string) ;
438- dash_spv_ffi_array_destroy ( Box :: into_raw ( Box :: new ( array) ) ) ;
438+ dash_spv_ffi_array_destroy ( & mut array as * mut FFIArray ) ;
439439 }
440440 }
441441}
0 commit comments