mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-02-20 06:36:18 +00:00
Free CString memory in Rust
Using g_free() on it will likely not work.
This commit is contained in:
parent
acc7d2ea26
commit
872e9a8ab1
3 changed files with 25 additions and 4 deletions
10
src/rssink.c
10
src/rssink.c
|
@ -42,6 +42,8 @@ extern gboolean sink_start (void * filesink);
|
|||
extern gboolean sink_stop (void * filesink);
|
||||
extern void sink_drop (void * filesink);
|
||||
|
||||
extern void cstring_drop (void * str);
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_rs_sink_debug);
|
||||
#define GST_CAT_DEFAULT gst_rs_sink_debug
|
||||
|
||||
|
@ -151,9 +153,13 @@ gst_rs_sink_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
GstRsSink *sink = GST_RS_SINK (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_URI:
|
||||
g_value_take_string (value, sink_get_uri (sink->instance));
|
||||
case PROP_URI: {
|
||||
gchar *str = sink_get_uri (sink->instance);
|
||||
g_value_set_string (value, str);
|
||||
if (str)
|
||||
cstring_drop (str);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
|
@ -43,6 +43,8 @@ extern gboolean source_is_seekable (void * source);
|
|||
extern gboolean source_start (void * source);
|
||||
extern gboolean source_stop (void * source);
|
||||
|
||||
extern void cstring_drop (void * str);
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_rs_src_debug);
|
||||
#define GST_CAT_DEFAULT gst_rs_src_debug
|
||||
|
||||
|
@ -161,9 +163,13 @@ gst_rs_src_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
GstRsSrc *src = GST_RS_SRC (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_URI:
|
||||
g_value_take_string (value, source_get_uri (src->instance));
|
||||
case PROP_URI: {
|
||||
gchar *str = source_get_uri (src->instance);
|
||||
g_value_set_string (value, str);
|
||||
if (str)
|
||||
cstring_drop (str);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
// License along with this library; if not, write to the
|
||||
// Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
// Boston, MA 02110-1301, USA.
|
||||
//
|
||||
//
|
||||
use libc::c_char;
|
||||
use std::ffi::CString;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! println_err(
|
||||
|
@ -52,3 +56,8 @@ impl GBoolean {
|
|||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn cstring_drop(ptr: *mut c_char) {
|
||||
unsafe { CString::from_raw(ptr); }
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue