diff --git a/gst-plugin/src/demuxer.rs b/gst-plugin/src/demuxer.rs index 74bd67b7..0078053d 100644 --- a/gst-plugin/src/demuxer.rs +++ b/gst-plugin/src/demuxer.rs @@ -342,10 +342,10 @@ impl DemuxerWrapper { } #[no_mangle] -pub extern "C" fn demuxer_new(demuxer: *mut c_void, - create_instance: fn(Element) -> Box) - -> *mut DemuxerWrapper { - let instance = create_instance(unsafe { Element::new(demuxer) }); +pub unsafe extern "C" fn demuxer_new(demuxer: *mut c_void, + create_instance: fn(Element) -> Box) + -> *mut DemuxerWrapper { + let instance = create_instance(Element::new(demuxer)); Box::into_raw(Box::new(DemuxerWrapper::new(demuxer, instance))) } diff --git a/gst-plugin/src/sink.rs b/gst-plugin/src/sink.rs index 4ae04216..5c9928f3 100644 --- a/gst-plugin/src/sink.rs +++ b/gst-plugin/src/sink.rs @@ -176,10 +176,10 @@ impl SinkWrapper { } #[no_mangle] -pub extern "C" fn sink_new(sink: *mut c_void, - create_instance: fn(Element) -> Box) - -> *mut SinkWrapper { - let instance = create_instance(unsafe { Element::new(sink) }); +pub unsafe extern "C" fn sink_new(sink: *mut c_void, + create_instance: fn(Element) -> Box) + -> *mut SinkWrapper { + let instance = create_instance(Element::new(sink)); Box::into_raw(Box::new(SinkWrapper::new(sink, instance))) } diff --git a/gst-plugin/src/source.rs b/gst-plugin/src/source.rs index a8361bac..2338b15d 100644 --- a/gst-plugin/src/source.rs +++ b/gst-plugin/src/source.rs @@ -200,10 +200,10 @@ impl SourceWrapper { } #[no_mangle] -pub extern "C" fn source_new(source: *mut c_void, - create_instance: fn(Element) -> Box) - -> *mut SourceWrapper { - let instance = create_instance(unsafe { Element::new(source) }); +pub unsafe extern "C" fn source_new(source: *mut c_void, + create_instance: fn(Element) -> Box) + -> *mut SourceWrapper { + let instance = create_instance(Element::new(source)); Box::into_raw(Box::new(SourceWrapper::new(source, instance))) }