@@ -3,7 +3,8 @@ extern crate libc;
33use defines:: { AfError , DType } ;
44use error:: HANDLE_ERROR ;
55use self :: libc:: { c_int, size_t, c_char, c_void} ;
6- use std:: ffi:: CString ;
6+ use std:: ffi:: { CStr , CString } ;
7+ use util:: free_host;
78
89extern {
910 fn af_get_version ( major : * mut c_int , minor : * mut c_int , patch : * mut c_int ) -> c_int ;
@@ -21,9 +22,6 @@ extern {
2122 fn af_get_mem_step_size ( step_bytes : * mut size_t ) -> c_int ;
2223 fn af_device_gc ( ) -> c_int ;
2324 fn af_sync ( device : c_int ) -> c_int ;
24-
25- fn af_alloc_host ( elements : size_t , _type : DType ) -> * mut c_void ;
26- fn af_free_host ( ptr : * mut c_void ) -> c_int ;
2725}
2826
2927/// Get ArrayFire Version Number
@@ -72,17 +70,15 @@ pub fn info() {
7270/// [0] GeForce GT 750M, 2048 MB, CUDA Compute 3.0
7371/// ```
7472pub fn info_string ( verbose : bool ) -> String {
75- let mut tmp : * mut c_char = 0 as * mut c_char ;
73+ let result : String ;
7674 unsafe {
75+ let mut tmp: * mut c_char = 0 as * mut c_char ;
7776 let err_val = af_info_string ( & mut tmp, verbose) ;
7877 HANDLE_ERROR ( AfError :: from ( err_val) ) ;
79-
80- let result = ( * CString :: from_raw ( tmp) ) . to_str ( ) . unwrap ( ) . to_owned ( ) ;
81-
82- let err_val = af_free_host ( tmp as * mut c_void ) ;
83- HANDLE_ERROR ( AfError :: from ( err_val) ) ;
84- result
78+ result = CStr :: from_ptr ( tmp) . to_string_lossy ( ) . into_owned ( ) ;
79+ free_host ( tmp) ;
8580 }
81+ result
8682}
8783
8884/// Initialize ArrayFire library
0 commit comments