diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c index 8e49fe977c..05cdfe56ab 100644 --- a/gst-libs/gst/gl/gstglcolorconvert.c +++ b/gst-libs/gst/gl/gstglcolorconvert.c @@ -829,7 +829,9 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) { GString *ret = g_string_sized_new (4); gchar *expect, *want; + gchar *orig_want; int len; + gboolean discard_output = TRUE; if (g_ascii_strcasecmp (expected, wanted) == 0) { g_string_free (ret, TRUE); @@ -837,7 +839,7 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) } expect = g_ascii_strdown (expected, -1); - want = g_ascii_strdown (wanted, -1); + orig_want = want = g_ascii_strdown (wanted, -1); if (strcmp (expect, "rgb16") == 0 || strcmp (expect, "bgr16") == 0) { gchar *temp = expect; @@ -847,7 +849,7 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) if (strcmp (want, "rgb16") == 0 || strcmp (want, "bgr16") == 0) { gchar *temp = want; - want = g_strndup (temp, 3); + orig_want = want = g_strndup (temp, 3); g_free (temp); } @@ -859,7 +861,7 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) len++; } g_free (want); - want = new_want; + orig_want = want = new_want; } /* pad expect with 'a's */ @@ -884,7 +886,7 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) if (!(val = strchr (expect, needle)) && needle == 'a' && !(val = strchr (expect, 'x'))) - goto fail; + goto out; idx = (gint) (val - expect); @@ -892,11 +894,12 @@ _RGB_pixel_order (const gchar * expected, const gchar * wanted) want = &want[1]; } - return g_string_free (ret, FALSE); + discard_output = FALSE; +out: + g_free (orig_want); + g_free (expect); -fail: - g_string_free (ret, TRUE); - return NULL; + return g_string_free (ret, discard_output); } static void