summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2010-01-18 13:57:29 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2010-01-18 13:57:29 +0100
commited1247b561b02bf8066ba971a34f6d62e03899f5 (patch)
tree2525bb9484435127cd60817f76122c01917cd254
parent743cde4b495ce41d0e9bf4613af35f087926305e (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.c11
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;
}