diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-01-18 13:57:29 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-01-18 13:57:29 +0100 |
commit | ed1247b561b02bf8066ba971a34f6d62e03899f5 (patch) | |
tree | 2525bb9484435127cd60817f76122c01917cd254 | |
parent | 743cde4b495ce41d0e9bf4613af35f087926305e (diff) |
miniobject: The GValue collection function can not assume that the destination is initialized
...and it will usually be either filled by zeroes or random values.
Fixes bug #607283.
-rw-r--r-- | gst/gstminiobject.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c index 8836b5d89d..ded3abd0b6 100644 --- a/gst/gstminiobject.c +++ b/gst/gstminiobject.c @@ -430,8 +430,8 @@ gst_value_mini_object_copy (const GValue * src_value, GValue * dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = - gst_mini_object_ref (GST_MINI_OBJECT_CAST (src_value-> - data[0].v_pointer)); + gst_mini_object_ref (GST_MINI_OBJECT_CAST (src_value->data[0]. + v_pointer)); } else { dest_value->data[0].v_pointer = NULL; } @@ -447,7 +447,12 @@ static gchar * gst_value_mini_object_collect (GValue * value, guint n_collect_values, GTypeCValue * collect_values, guint collect_flags) { - gst_value_set_mini_object (value, collect_values[0].v_pointer); + if (collect_values[0].v_pointer) { + value->data[0].v_pointer = + gst_mini_object_ref (collect_values[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } return NULL; } |