launch: Fix memory management issue with the rendering format
authorThibault Saunier <tsaunier@igalia.com>
Fri, 28 Feb 2020 14:52:38 +0000 (11:52 -0300)
committerThibault Saunier <tsaunier@igalia.com>
Wed, 25 Mar 2020 14:26:29 +0000 (11:26 -0300)
tools/ges-launcher.c
tools/utils.c

index f13cd1d9e72582f8d40360a35b8e866292f449da..5722740b9bf03dbe0ab70bc542222486d4a43391 100644 (file)
@@ -477,8 +477,6 @@ _set_rendering_details (GESLauncher * self)
   /* Setup profile/encoding if needed */
   if (opts->outputuri) {
     GstEncodingProfile *prof = NULL;
-    gchar *format = NULL;
-
     if (!opts->format) {
       GESProject *proj =
           GES_PROJECT (ges_extractable_get_asset (GES_EXTRACTABLE (self->
@@ -496,18 +494,25 @@ _set_rendering_details (GESLauncher * self)
     }
 
     if (!prof) {
-      if (opts->format == NULL)
+      if (opts->format == NULL) {
         opts->format = get_file_extension (opts->outputuri);
 
-      prof = parse_encoding_profile (opts->format);
+        prof = parse_encoding_profile (opts->format);
+      } else {
+        prof = parse_encoding_profile (opts->format);
+        if (!prof)
+          g_error ("Invalid format specified: %s", opts->format);
+      }
+
       if (!prof) {
         warn ("No format specified and couldn't find one from output file extension, " "falling back to theora+vorbis in ogg.");
-        format = opts->format =
+        g_free (opts->format);
+
+        opts->format =
             g_strdup ("application/ogg:video/x-theora:audio/x-vorbis");
         prof = parse_encoding_profile (opts->format);
       }
 
-      g_free (format);
       if (!prof) {
         printerr ("Could not find any encoding format for %s\n", opts->format);
         return FALSE;
index 614effa9ca3cdf58b565ac565ddbd13cdbf007f8..f7049f0b78a7e2c533793e0da55365263e658d13 100644 (file)
@@ -232,7 +232,7 @@ get_file_extension (gchar * uri)
   if (find <= 0)
     return NULL;
 
-  return &uri[find + 1];
+  return g_strdup (&uri[find + 1]);
 }
 
 static const gchar *