mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-01 03:52:25 +00:00
value: free caps during failure
While calling gst_value_deserialize_sample, if there is a failure after caps is ref'ed, then caps is getting leaked. Hence checking for caps in fail: goto condition and unref'ing it https://bugzilla.gnome.org/show_bug.cgi?id=753338
This commit is contained in:
parent
749810b238
commit
0eb9dde1e8
1 changed files with 3 additions and 7 deletions
|
@ -2445,7 +2445,7 @@ gst_value_deserialize_sample (GValue * dest, const gchar * s)
|
|||
GValue bval = G_VALUE_INIT, sval = G_VALUE_INIT;
|
||||
GstStructure *info;
|
||||
GstSample *sample;
|
||||
GstCaps *caps;
|
||||
GstCaps *caps = NULL;
|
||||
gboolean ret = FALSE;
|
||||
gchar **fields;
|
||||
gsize outlen;
|
||||
|
@ -2471,8 +2471,6 @@ gst_value_deserialize_sample (GValue * dest, const gchar * s)
|
|||
caps = gst_caps_from_string (fields[1]);
|
||||
if (caps == NULL)
|
||||
goto fail;
|
||||
} else {
|
||||
caps = NULL;
|
||||
}
|
||||
|
||||
if (strcmp (fields[2], "None") != 0) {
|
||||
|
@ -2499,13 +2497,11 @@ gst_value_deserialize_sample (GValue * dest, const gchar * s)
|
|||
|
||||
g_value_take_boxed (dest, sample);
|
||||
|
||||
if (caps)
|
||||
gst_caps_unref (caps);
|
||||
|
||||
ret = TRUE;
|
||||
|
||||
fail:
|
||||
|
||||
if (caps)
|
||||
gst_caps_unref (caps);
|
||||
g_value_unset (&bval);
|
||||
g_value_unset (&sval);
|
||||
|
||||
|
|
Loading…
Reference in a new issue