| 76 | } |
| 77 | |
| 78 | unsafe extern "C" fn clone_fn_wrapper(config: &FFI_SessionConfig) -> FFI_SessionConfig { |
| 79 | unsafe { |
| 80 | let old_private_data = config.private_data as *mut SessionConfigPrivateData; |
| 81 | let old_config = (*old_private_data).config.clone(); |
| 82 | |
| 83 | let private_data = Box::new(SessionConfigPrivateData { config: old_config }); |
| 84 | |
| 85 | FFI_SessionConfig { |
| 86 | config_options: config.config_options.clone(), |
| 87 | private_data: Box::into_raw(private_data) as *mut c_void, |
| 88 | clone: clone_fn_wrapper, |
| 89 | release: release_fn_wrapper, |
| 90 | library_marker_id: crate::get_library_marker_id, |
| 91 | } |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | struct SessionConfigPrivateData { |
| 96 | pub config: SessionConfig, |