pbutils: encoding-target: fix error checking in target file loading
authorTeemu Katajisto <teemu.katajisto@digia.com>
Mon, 21 Feb 2011 13:58:16 +0000 (15:58 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Tue, 22 Feb 2011 10:44:11 +0000 (11:44 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=642949

gst-libs/gst/pbutils/encoding-target.c

index 2e9217386362a0549b9c3404e42d5254d19cbb40..b7e7ad545b9afeec03c82fa4e396cb75e0d9c49e 100644 (file)
@@ -707,6 +707,9 @@ load_file_and_read_header (const gchar * path, gchar ** targetname,
 {
   GKeyFile *in;
   gboolean res;
+  GError *key_error = NULL;
+
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
 
   in = g_key_file_new ();
 
@@ -714,12 +717,13 @@ load_file_and_read_header (const gchar * path, gchar ** targetname,
 
   res =
       g_key_file_load_from_file (in, path,
-      G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, error);
-  if (!res || error != NULL)
+      G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, &key_error);
+  if (!res || key_error != NULL)
     goto load_error;
 
+  key_error = NULL;
   *targetname =
-      g_key_file_get_value (in, GST_ENCODING_TARGET_HEADER, "name", error);
+      g_key_file_get_value (in, GST_ENCODING_TARGET_HEADER, "name", &key_error);
   if (!*targetname)
     goto empty_name;
 
@@ -734,14 +738,16 @@ load_file_and_read_header (const gchar * path, gchar ** targetname,
 load_error:
   {
     GST_WARNING ("Unable to read GstEncodingTarget file %s: %s",
-        path, (*error)->message);
+        path, key_error->message);
+    g_propagate_error (error, key_error);
     g_key_file_free (in);
     return NULL;
   }
 
 empty_name:
   {
-    GST_WARNING ("Wrong header in file %s: %s", path, (*error)->message);
+    GST_WARNING ("Wrong header in file %s: %s", path, key_error->message);
+    g_propagate_error (error, key_error);
     g_key_file_free (in);
     return NULL;
   }