[gnac] Code hardening



commit e6bd748fbaa83aaf5bf48f1bda46f5391d7bf749
Author: BenoÃt Dupasquier <bdupasqu src gnome org>
Date:   Mon Feb 27 17:40:43 2012 +0000

    Code hardening

 libgnac/libgnac-media-item.c         |   20 ++++++++++++++++++--
 libgnac/libgnac-output.c             |    8 ++++++--
 src/gnac-file-list.c                 |    1 +
 src/gnac-main.c                      |    4 ++--
 src/gnac-properties.c                |    9 +++++++--
 src/gnac-ui.c                        |   18 ++++++++++++------
 src/profiles/gnac-profiles-manager.c |    1 +
 7 files changed, 47 insertions(+), 14 deletions(-)
---
diff --git a/libgnac/libgnac-media-item.c b/libgnac/libgnac-media-item.c
index b1b202e..6b19c7c 100644
--- a/libgnac/libgnac-media-item.c
+++ b/libgnac/libgnac-media-item.c
@@ -126,7 +126,15 @@ libgnac_item_build(LibgnacMediaItem  *item,
 gboolean
 libgnac_item_has_audio(LibgnacMediaItem *item)
 {
-  LibgnacTags *tags = libgnac_metadata_extract(metadata, item->source, NULL);
+  GError *error = NULL;
+  LibgnacTags *tags = libgnac_metadata_extract(metadata, item->source, &error);
+  if (error) {
+    gchar *filename = g_file_get_path(item->source);
+    libgnac_debug("Failed to extract metadata for %s: %s",
+        filename, error->message);
+    g_free(filename);
+    g_clear_error(&error);
+  }
   return libgnac_metadata_tag_exists(tags, GNAC_TAG_HAS_AUDIO);
 }
 
@@ -134,7 +142,15 @@ libgnac_item_has_audio(LibgnacMediaItem *item)
 gboolean
 libgnac_item_has_video(LibgnacMediaItem *item)
 {
-  LibgnacTags *tags = libgnac_metadata_extract(metadata, item->source, NULL);
+  GError *error = NULL;
+  LibgnacTags *tags = libgnac_metadata_extract(metadata, item->source, &error);
+  if (error) {
+    gchar *filename = g_file_get_path(item->source);
+    libgnac_debug("Failed to extract metadata for %s: %s",
+        filename, error->message);
+    g_free(filename);
+    g_clear_error(&error);
+  }
   return libgnac_metadata_tag_exists(tags, GNAC_TAG_HAS_VIDEO);
 }
 
diff --git a/libgnac/libgnac-output.c b/libgnac/libgnac-output.c
index 415cc5b..c01e980 100644
--- a/libgnac/libgnac-output.c
+++ b/libgnac/libgnac-output.c
@@ -324,9 +324,14 @@ libgnac_output_get_filename(GFile        *source,
                             const gchar  *rename_pattern,
                             GError      **error)
 {
+  GError *err = NULL;
   gchar *output = NULL;
 
-  LibgnacTags *tags = libgnac_metadata_extract(metadata, source, NULL);
+  LibgnacTags *tags = libgnac_metadata_extract(metadata, source, &err);
+  if (err) {
+    g_clear_error(&err);
+  }
+
   if (tags) {
     libgnac_output_rename_patterns_update(tags);
     output = g_strdup(rename_pattern);
@@ -336,7 +341,6 @@ libgnac_output_get_filename(GFile        *source,
   }
 
   if (!output) {
-    GError *err = NULL;
     output = libgnac_output_remove_extension_from_file(source, &err);
     if (err) {
       libgnac_debug("Unable to remove extension");
diff --git a/src/gnac-file-list.c b/src/gnac-file-list.c
index 2a46862..9c0dbde 100644
--- a/src/gnac-file-list.c
+++ b/src/gnac-file-list.c
@@ -499,6 +499,7 @@ gnac_file_list_update_cursor(void)
     cursor = gdk_cursor_new(GDK_WATCH);
   }
   gdk_window_set_cursor(gtk_tree_view_get_bin_window(view), cursor);
+  if (G_IS_OBJECT(cursor)) g_object_unref(cursor);
 }
 
 
diff --git a/src/gnac-main.c b/src/gnac-main.c
index 378ae98..241cf50 100644
--- a/src/gnac-main.c
+++ b/src/gnac-main.c
@@ -340,8 +340,8 @@ gnac_on_ui_destroy_cb(GtkWidget *widget,
 
   }
 
-  if (converter) g_object_unref(converter);
-  if (metadata) g_object_unref(metadata);
+  if (G_IS_OBJECT(converter)) g_object_unref(converter);
+  if (G_IS_OBJECT(metadata)) g_object_unref(metadata);
 
   gnac_ui_destroy();
 
diff --git a/src/gnac-properties.c b/src/gnac-properties.c
index c355661..01a73e8 100644
--- a/src/gnac-properties.c
+++ b/src/gnac-properties.c
@@ -497,9 +497,14 @@ gnac_properties_update_display(GtkTreeRowReference *reference)
   if (!gnac_file_list_get(reference, &uri)) return;
 
   GFile *file = g_file_new_for_uri(uri);
-  g_free(uri);
+  GError *error = NULL;
+  tags = libgnac_metadata_extract(metadata, file, &error);
+  if (error) {
+    libgnac_debug("Failed to extract metadata for %s: %s", uri, error->message);
+    g_clear_error(&error);
+  }
 
-  tags = libgnac_metadata_extract(metadata, file, NULL);
+  g_free(uri);
   g_object_unref(file);
 
   gnac_properties_reset_properties();
diff --git a/src/gnac-ui.c b/src/gnac-ui.c
index dee92d9..c51594b 100644
--- a/src/gnac-ui.c
+++ b/src/gnac-ui.c
@@ -106,7 +106,7 @@ gnac_ui_file_chooser_dispose(void)
 {
   g_free(last_used_folder);
 
-  if (gnac_file_chooser) {
+  if (GTK_IS_WIDGET(gnac_file_chooser)) {
     gnac_ui_file_chooser_unref_filters();
     gtk_widget_destroy(gnac_file_chooser);
   }
@@ -1083,7 +1083,7 @@ gnac_ui_destroy(void)
 
   gnac_file_list_destroy();
 
-  if (trayicon) {
+  if (G_IS_OBJECT(trayicon)) {
     g_object_unref(trayicon);
     trayicon = NULL;
     if (tooltip_path) {
@@ -1092,12 +1092,12 @@ gnac_ui_destroy(void)
     }
   }
 
-  if (gnac_main_builder) {
+  if (G_IS_OBJECT(gnac_main_builder)) {
     GtkWidget *main_window = gnac_ui_get_widget("main_window");
-    if (main_window) gtk_widget_destroy(main_window);
+    if (GTK_IS_WIDGET(main_window)) gtk_widget_destroy(main_window);
 
     GtkWidget *about_dialog = gnac_ui_get_widget("aboutdialog");
-    if (about_dialog) gtk_widget_destroy(about_dialog);
+    if (GTK_IS_WIDGET(about_dialog)) gtk_widget_destroy(about_dialog);
 
     gnac_ui_file_chooser_dispose();
     g_object_unref(gnac_main_builder); 
@@ -1152,8 +1152,14 @@ gnac_ui_query_tooltip_cb(GtkStatusIcon *status_icon,
                          GtkTooltip    *tooltip,
                          gpointer       user_data)
 {
+  GError *error = NULL;
   GFile *tooltip_file = g_file_new_for_uri(tooltip_path);
-  LibgnacTags *tags = libgnac_metadata_extract(metadata, tooltip_file, NULL);
+  LibgnacTags *tags = libgnac_metadata_extract(metadata, tooltip_file, &error);
+  if (error) {
+    libgnac_debug("Failed to extract metadata for %s: %s",
+        tooltip_path, error->message);
+    g_clear_error(&error);
+  }
   g_object_unref(tooltip_file);
 
   const gchar *album = libgnac_metadata_tag_exists(tags, GST_TAG_ALBUM) ?
diff --git a/src/profiles/gnac-profiles-manager.c b/src/profiles/gnac-profiles-manager.c
index 2640b1e..87d13c7 100644
--- a/src/profiles/gnac-profiles-manager.c
+++ b/src/profiles/gnac-profiles-manager.c
@@ -1088,6 +1088,7 @@ gnac_profiles_mgr_on_copy(GtkWidget *widget,
     return;
   }
 
+  // FIXME seems we have a leak here
   AudioProfileGeneric *copy_profile =
       gnac_profiles_properties_load_profile_from_file(
           new_path, new_name, &error);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]