diff --git a/src/wrapper.rs b/src/wrapper.rs index 8896204..e81c4c1 100644 --- a/src/wrapper.rs +++ b/src/wrapper.rs @@ -11,7 +11,7 @@ use com_rs::ComPtr; use libloading::{Library, Symbol}; use std::convert::Into; use std::ffi::c_void; -use std::rc::Rc; +use std::pin::Pin; #[macro_export] macro_rules! check_hr { @@ -135,7 +135,7 @@ struct DxcIncludeHandlerWrapperVtbl { struct DxcIncludeHandlerWrapper<'a> { vtable: Box, handler: Box, - pinned: Vec>, + pinned: Vec>, library: &'a DxcLibrary, } @@ -164,19 +164,18 @@ impl<'a> DxcIncludeHandlerWrapper<'a> { let source = unsafe { (*me).handler.load_source(filename) }; if let Some(source) = source { - let pinned_source = Rc::new(source); - + let source = Pin::new(source); let mut blob = unsafe { (*me) .library - .create_blob_with_encoding_from_str(pinned_source.as_str()) + .create_blob_with_encoding_from_str(&source) .unwrap() }; unsafe { blob.inner.add_ref(); *include_source = *blob.inner.as_mut_ptr(); - (*me).pinned.push(pinned_source); + (*me).pinned.push(source); } 0