@@ -6,9 +6,10 @@ mod tests {
6
6
use cargo_metadata:: Message ;
7
7
use libloading:: { Library , Symbol } ;
8
8
use std:: ffi:: CString ;
9
- use std:: os:: raw:: c_void;
10
9
use std:: process:: { Command , Stdio } ;
11
- use uniffi:: { FfiConverter , ForeignCallback , RustBuffer , RustCallStatus , RustCallStatusCode } ;
10
+ use uniffi:: {
11
+ FfiConverter , ForeignCallback , Handle , RustBuffer , RustCallStatus , RustCallStatusCode ,
12
+ } ;
12
13
use uniffi_bindgen:: ComponentInterface ;
13
14
14
15
struct UniFfiTag ;
@@ -149,34 +150,38 @@ mod tests {
149
150
. ffi_func ( )
150
151
. name ( ) ,
151
152
) ;
152
- let coveralls_new: Symbol <
153
- unsafe extern "C" fn ( RustBuffer , & mut RustCallStatus ) -> * const c_void ,
154
- > = get_symbol (
155
- & library,
156
- object_def. primary_constructor ( ) . unwrap ( ) . ffi_func ( ) . name ( ) ,
157
- ) ;
153
+ let coveralls_new: Symbol < unsafe extern "C" fn ( RustBuffer , & mut RustCallStatus ) -> Handle > =
154
+ get_symbol (
155
+ & library,
156
+ object_def. primary_constructor ( ) . unwrap ( ) . ffi_func ( ) . name ( ) ,
157
+ ) ;
158
158
let coveralls_get_name: Symbol <
159
- unsafe extern "C" fn ( * const c_void , & mut RustCallStatus ) -> RustBuffer ,
159
+ unsafe extern "C" fn ( Handle , & mut RustCallStatus ) -> RustBuffer ,
160
160
> = get_symbol (
161
161
& library,
162
162
object_def. get_method ( "get_name" ) . ffi_func ( ) . name ( ) ,
163
163
) ;
164
- let coveralls_free: Symbol < unsafe extern "C" fn ( * const c_void , & mut RustCallStatus ) -> ( ) > =
164
+ let coveralls_inc_ref: Symbol < unsafe extern "C" fn ( Handle , & mut RustCallStatus ) -> ( ) > =
165
+ get_symbol ( & library, object_def. ffi_object_inc_ref ( ) . name ( ) ) ;
166
+ let coveralls_free: Symbol < unsafe extern "C" fn ( Handle , & mut RustCallStatus ) -> ( ) > =
165
167
get_symbol ( & library, object_def. ffi_object_free ( ) . name ( ) ) ;
166
168
167
169
let num_alive = unsafe { get_num_alive ( & mut call_status) } ;
168
170
assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
169
171
assert_eq ! ( num_alive, 0 ) ;
170
172
171
- let obj_id = unsafe {
173
+ let obj_handle = unsafe {
172
174
coveralls_new (
173
175
<String as FfiConverter < UniFfiTag > >:: lower ( "TestName" . into ( ) ) ,
174
176
& mut call_status,
175
177
)
176
178
} ;
177
179
assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
178
180
179
- let name_buf = unsafe { coveralls_get_name ( obj_id, & mut call_status) } ;
181
+ unsafe { coveralls_inc_ref ( obj_handle, & mut call_status) } ;
182
+ assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
183
+
184
+ let name_buf = unsafe { coveralls_get_name ( obj_handle, & mut call_status) } ;
180
185
assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
181
186
assert_eq ! (
182
187
<String as FfiConverter <UniFfiTag >>:: try_lift( name_buf) . unwrap( ) ,
@@ -187,7 +192,7 @@ mod tests {
187
192
assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
188
193
assert_eq ! ( num_alive, 1 ) ;
189
194
190
- unsafe { coveralls_free ( obj_id , & mut call_status) } ;
195
+ unsafe { coveralls_free ( obj_handle , & mut call_status) } ;
191
196
assert_eq ! ( call_status. code, RustCallStatusCode :: Success ) ;
192
197
193
198
let num_alive = unsafe { get_num_alive ( & mut call_status) } ;
0 commit comments