[grilo] core: Use g_clear_pointer/object when possible



commit 806a8598c34d5b408eeebd3b699d50a03bd5c105
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date:   Thu Mar 6 17:28:08 2014 +0000

    core: Use g_clear_pointer/object when possible
    
    Reduces the number of lines and makes the code more readable.

 configure.ac               |    2 +-
 libs/net/grl-net-mock.c    |   37 +++++++------------------
 libs/net/grl-net-wc.c      |   10 ++-----
 libs/pls/grl-pls.c         |   32 +++++----------------
 src/grl-caps.c             |    8 +----
 src/grl-plugin.c           |    9 ++----
 src/grl-range-value.c      |    9 +-----
 src/grl-registry.c         |   31 +++++----------------
 src/grl-source.c           |   13 +++------
 tools/grilo-test-ui/main.c |   63 +++++++++++--------------------------------
 10 files changed, 58 insertions(+), 156 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 59684f0..7abbcec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,7 +123,7 @@ AC_DEFINE_UNQUOTED(GRL_PLUGINS_DIR, "$GRL_PLUGINS_DIR", [Plugins directory])
 # DEPENDENCIES
 # ----------------------------------------------------------
 
-PKG_CHECK_MODULES(DEPS, glib-2.0 >= 2.32 \
+PKG_CHECK_MODULES(DEPS, glib-2.0 >= 2.34 \
                        gobject-2.0 \
                        gmodule-2.0 \
                        gio-2.0 \
diff --git a/libs/net/grl-net-mock.c b/libs/net/grl-net-mock.c
index 6544687..ce9c367 100644
--- a/libs/net/grl-net-mock.c
+++ b/libs/net/grl-net-mock.c
@@ -119,16 +119,13 @@ get_url_mocked (GrlNetWc *self,
     g_simple_async_result_complete_in_idle (G_SIMPLE_ASYNC_RESULT (result));
     g_object_unref (result);
     g_free (new_url);
-    if (data_file)
-      g_free (data_file);
-    if (full_path)
-      g_free (full_path);
+    g_clear_pointer (&data_file, g_free);
+    g_clear_pointer (&full_path, g_free);
+
     return;
   }
-  if (data_file)
-    g_free (data_file);
-  if (full_path)
-    g_free (full_path);
+  g_clear_pointer (&data_file, g_free);
+  g_clear_pointer (&full_path, g_free);
 
   g_simple_async_result_set_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result),
                                              new_url,
@@ -156,11 +153,8 @@ get_content_mocked (GrlNetWc *self,
   }
   g_file_get_contents (full_path, content, length, &error);
 
-  if (data_file)
-    g_free (data_file);
-
-  if (full_path)
-    g_free (full_path);
+  g_clear_pointer (&data_file, g_free);
+  g_clear_pointer (&full_path, g_free);
 }
 
 void init_mock_requester (GrlNetWc *self)
@@ -206,8 +200,7 @@ void init_mock_requester (GrlNetWc *self)
 
   if (!enable_mocking) {
     g_free (config_filename);
-    g_key_file_unref (config);
-    config = NULL;
+    g_clear_pointer (&config, g_key_file_unref);
     return;
   }
 
@@ -266,17 +259,9 @@ void finalize_mock_requester (GrlNetWc *self)
   }
 
   if (g_atomic_int_dec_and_test (&refcount)) {
-    if (config) {
-      g_key_file_unref (config);
-    }
-
-    if (base_path) {
-      g_free (base_path);
-    }
-
-    if (ignored_parameters) {
-      g_regex_unref (ignored_parameters);
-    }
+    g_clear_pointer (&config, g_key_file_unref);
+    g_clear_pointer (&base_path, g_free);
+    g_clear_pointer (&ignored_parameters, g_regex_unref);
   }
 }
 
diff --git a/libs/net/grl-net-wc.c b/libs/net/grl-net-wc.c
index 6ac78c8..e840cc2 100644
--- a/libs/net/grl-net-wc.c
+++ b/libs/net/grl-net-wc.c
@@ -443,9 +443,7 @@ request_clos_destroy (gpointer data)
   struct request_clos *c = (struct request_clos *) data;
 
   g_free (c->url);
-  if (c->headers) {
-    g_hash_table_unref (c->headers);
-  }
+  g_clear_pointer (&c->headers, g_hash_table_unref);
   g_free (c);
 }
 
@@ -805,8 +803,7 @@ get_content (GrlNetWc *self,
   GrlNetWcPrivate *priv = self->priv;
   struct request_res *rr = op;
 
-  if (priv->previous_data)
-    g_free (priv->previous_data);
+  g_clear_pointer (&priv->previous_data, g_free);
 
   if (is_mocked ()) {
     get_content_mocked (self, op, &(priv->previous_data), length);
@@ -922,8 +919,7 @@ void grl_net_wc_request_with_headers_async (GrlNetWc *self,
                                               callback,
                                               user_data);
 
-  if (headers)
-    g_hash_table_unref (headers);
+  g_clear_pointer (&headers, g_hash_table_unref);
 }
 
 
diff --git a/libs/pls/grl-pls.c b/libs/pls/grl-pls.c
index a04f14f..cc4072c 100644
--- a/libs/pls/grl-pls.c
+++ b/libs/pls/grl-pls.c
@@ -117,36 +117,22 @@ grl_pls_private_free (struct _GrlPlsPrivate *priv)
 {
   g_return_if_fail (priv);
 
-  if (priv->cancellable) {
-    g_object_unref (priv->cancellable);
-    priv->cancellable = NULL;
-  }
-
+  g_clear_object (&priv->cancellable);
   g_free (priv);
 }
 
 static void
 grl_source_browse_spec_free (GrlSourceBrowseSpec *spec)
 {
-  if (spec->source) {
-    g_object_unref (spec->source);
-    spec->source = NULL;
-  }
-
-  if (spec->container) {
-    g_object_unref (spec->container);
-    spec->container = NULL;
-  }
+  g_clear_object (&spec->source);
+  g_clear_object (&spec->container);
 
   if (spec->keys) {
     /* TODO */
     spec->keys = NULL;
   }
 
-  if (spec->options) {
-    g_object_unref (spec->options);
-    spec->options = NULL;
-  }
+  g_clear_object (&spec->options);
 
   if (spec->user_data) {
     struct _GrlPlsPrivate *priv = (struct _GrlPlsPrivate *) spec->user_data;
@@ -1124,12 +1110,10 @@ file_is_valid_content (GFileInfo *info, gboolean fast, GrlOperationOptions *opti
   }
 
  end:
-  if (file_date)
-    g_date_time_unref (file_date);
-  if (min_date)
-    g_date_time_unref (min_date);
-  if (max_date)
-    g_date_time_unref (max_date);
+  g_clear_pointer (&file_date, g_date_time_unref);
+  g_clear_pointer (&min_date, g_date_time_unref);
+  g_clear_pointer (&max_date, g_date_time_unref);
+
   return is_media;
 }
 
diff --git a/src/grl-caps.c b/src/grl-caps.c
index 888cfe6..89d2ea5 100644
--- a/src/grl-caps.c
+++ b/src/grl-caps.c
@@ -228,9 +228,7 @@ grl_caps_set_key_filter (GrlCaps *caps, GList *keys)
 {
   g_return_if_fail (caps);
 
-  if (caps->priv->key_filter) {
-    g_list_free (caps->priv->key_filter);
-  }
+  g_clear_pointer (&caps->priv->key_filter, g_list_free);
 
   caps->priv->key_filter = g_list_copy (keys);
 }
@@ -287,9 +285,7 @@ grl_caps_set_key_range_filter (GrlCaps *caps, GList *keys)
 {
   g_return_if_fail (caps);
 
-  if (caps->priv->key_range_filter) {
-    g_list_free (caps->priv->key_range_filter);
-  }
+  g_clear_pointer (&caps->priv->key_range_filter, g_list_free);
 
   caps->priv->key_range_filter = g_list_copy (keys);
 }
diff --git a/src/grl-plugin.c b/src/grl-plugin.c
index c8634ff..7e92c93 100644
--- a/src/grl-plugin.c
+++ b/src/grl-plugin.c
@@ -264,9 +264,8 @@ grl_plugin_set_id (GrlPlugin *plugin,
 {
   g_return_if_fail (GRL_IS_PLUGIN (plugin));
 
-  if (plugin->priv->id) {
-    g_free (plugin->priv->id);
-  }
+  g_clear_pointer (&plugin->priv->id, g_free);
+
   plugin->priv->id = g_strdup (id);
 }
 
@@ -283,9 +282,7 @@ grl_plugin_set_filename (GrlPlugin *plugin,
 {
   g_return_if_fail (GRL_IS_PLUGIN (plugin));
 
-  if (plugin->priv->filename) {
-    g_free (plugin->priv->filename);
-  }
+  g_clear_pointer (&plugin->priv->filename, g_free);
 
   plugin->priv->filename = g_strdup (filename);
 }
diff --git a/src/grl-range-value.c b/src/grl-range-value.c
index 34e8a8d..3f9264f 100644
--- a/src/grl-range-value.c
+++ b/src/grl-range-value.c
@@ -55,13 +55,8 @@ grl_range_value_new (GValue *min, GValue *max)
 void
 grl_range_value_free (GrlRangeValue *range)
 {
-  if (range->min) {
-    grl_g_value_free (range->min);
-  }
-
-  if (range->max) {
-    grl_g_value_free (range->max);
-  }
+  g_clear_pointer (&range->min, grl_g_value_free);
+  g_clear_pointer (&range->max, grl_g_value_free);
 
   g_slice_free (GrlRangeValue, range);
 }
diff --git a/src/grl-registry.c b/src/grl-registry.c
index cbbf600..46b366b 100644
--- a/src/grl-registry.c
+++ b/src/grl-registry.c
@@ -633,8 +633,7 @@ grl_registry_restrict_plugins (GrlRegistry *registry,
 
   /* Free previous list */
   if (registry->priv->allowed_plugins) {
-    g_slist_foreach (registry->priv->allowed_plugins, (GFunc) g_free, NULL);
-    g_slist_free (registry->priv->allowed_plugins);
+    g_slist_free_full (registry->priv->allowed_plugins, g_free);
     registry->priv->allowed_plugins = NULL;
   }
 
@@ -665,8 +664,7 @@ grl_registry_shutdown (GrlRegistry *registry)
     while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &plugin)) {
       shutdown_plugin (plugin);
     }
-    g_hash_table_unref (registry->priv->plugins);
-    registry->priv->plugins = NULL;
+    g_clear_pointer (&registry->priv->plugins, g_hash_table_unref);
   }
 
   if (registry->priv->sources) {
@@ -674,19 +672,11 @@ grl_registry_shutdown (GrlRegistry *registry)
     while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &source)) {
       g_object_unref (source);
     }
-    g_hash_table_unref (registry->priv->sources);
-    registry->priv->sources = NULL;
+    g_clear_pointer (&registry->priv->sources, g_hash_table_unref);
   }
 
-  if (registry->priv->ranks) {
-    g_hash_table_unref (registry->priv->ranks);
-    registry->priv->configs = NULL;
-  }
-
-  if (registry->priv->configs) {
-    g_hash_table_unref (registry->priv->configs);
-    registry->priv->configs = NULL;
-  }
+  g_clear_pointer (&registry->priv->ranks, g_hash_table_unref);
+  g_clear_pointer (&registry->priv->configs, g_hash_table_unref);
 
   /* We need to free this table with care. Several keys can be pointing to the
      same value, so we need to ensure that we only free the value once */
@@ -702,8 +692,7 @@ grl_registry_shutdown (GrlRegistry *registry)
       }
       g_list_free (related_keys);
     }
-    g_hash_table_unref (registry->priv->related_keys);
-    registry->priv->related_keys = NULL;
+    g_clear_pointer (&registry->priv->related_keys, g_hash_table_unref);
   }
 
   g_slist_free_full (registry->priv->plugins_dir, (GDestroyNotify) g_free);
@@ -1814,12 +1803,8 @@ grl_registry_add_config_from_resource (GrlRegistry *registry,
   }
 
 bail:
-  if (keyfile) {
-    g_key_file_free (keyfile);
-  }
-  if (bytes) {
-    g_bytes_unref (bytes);
-  }
+  g_clear_pointer (&keyfile, g_key_file_free);
+  g_clear_pointer (&bytes, g_bytes_unref);
 
   return ret;
 }
diff --git a/src/grl-source.c b/src/grl-source.c
index 2cf1cc7..8fd7597 100644
--- a/src/grl-source.c
+++ b/src/grl-source.c
@@ -544,9 +544,7 @@ grl_source_finalize (GObject *object)
 static void
 set_string_property (gchar **property, const GValue *value)
 {
-  if (*property) {
-    g_free (*property);
-  }
+  g_clear_pointer (property, g_free);
   *property = g_value_dup_string (value);
 }
 
@@ -1177,9 +1175,7 @@ resolve_relay_free (struct ResolveRelayCb *rrc)
     }
     g_hash_table_unref (rrc->map);
   }
-
-  if (rrc->resolve_specs)
-    g_hash_table_unref (rrc->resolve_specs);
+  g_clear_pointer (&rrc->resolve_specs, g_hash_table_unref);
 
   g_slice_free (struct ResolveRelayCb, rrc);
 }
@@ -1193,9 +1189,8 @@ browse_relay_free (struct BrowseRelayCb *brc)
   if (brc->auto_split) {
     g_slice_free (struct AutoSplitCtl, brc->auto_split);
   }
-  if (brc->queue) {
-    g_queue_free (brc->queue);
-  }
+  g_clear_pointer (&brc->queue, g_queue_free);
+
   g_slice_free (struct BrowseRelayCb, brc);
 }
 
diff --git a/tools/grilo-test-ui/main.c b/tools/grilo-test-ui/main.c
index aee6cf6..f6f12d9 100644
--- a/tools/grilo-test-ui/main.c
+++ b/tools/grilo-test-ui/main.c
@@ -413,10 +413,8 @@ browse_history_pop (GrlSource **source, GrlMedia **media)
 static void
 set_cur_browse (GrlSource *source, GrlMedia *media)
 {
-  if (ui_state->cur_source)
-    g_object_unref (ui_state->cur_source);
-  if (ui_state->cur_container)
-    g_object_unref (ui_state->cur_container);
+  g_clear_object (&ui_state->cur_source);
+  g_clear_object (&ui_state->cur_container);
 
   if (source)
     g_object_ref (source);
@@ -430,10 +428,8 @@ set_cur_browse (GrlSource *source, GrlMedia *media)
 static void
 set_cur_resolve (GrlSource *source, GrlMedia *media)
 {
-  if (ui_state->cur_md_source)
-    g_object_unref (ui_state->cur_md_source);
-  if (ui_state->cur_md_media)
-    g_object_unref (ui_state->cur_md_media);
+  g_clear_object (&ui_state->cur_md_source);
+  g_clear_object (&ui_state->cur_md_media);
 
   if (source)
     g_object_ref (source);
@@ -707,9 +703,7 @@ browse_search_query_cb (GrlSource *source,
                        -1);
 
     g_object_unref (media);
-    if (icon) {
-      g_object_unref (icon);
-    }
+    g_clear_object (&icon);
   }
 
   if (remaining == 0) {
@@ -870,12 +864,8 @@ browser_activated_cb (GtkTreeView *tree_view,
   browse_history_push (ui_state->cur_source, ui_state->cur_container);
   browse (source, container);
 
-  if (source) {
-    g_object_unref (source);
-  }
-  if (content) {
-    g_object_unref (content);
-  }
+  g_clear_object (&source);
+  g_clear_object (&content);
 }
 
 static void
@@ -1070,8 +1060,7 @@ browser_row_selected_cb (GtkTreeView *tree_view,
   }
 
   g_object_unref (source);
-  if (content)
-    g_object_unref (content);
+  g_clear_object (&content);
 }
 
 static void
@@ -1105,8 +1094,7 @@ show_btn_clicked_cb (GtkButton *btn, gpointer user_data)
       GRL_WARNING ("Cannot use '%s' to show '%s'; using default application",
                    g_app_info_get_name (app),
                    ui_state->last_url);
-      g_error_free (error);
-      error = NULL;
+      g_clear_error (&error);
       g_app_info_launch_default_for_uri (ui_state->last_url, NULL, &error);
       if (error) {
         GRL_WARNING ("Cannot use default application to show '%s'. "
@@ -1134,10 +1122,8 @@ back_btn_clicked_cb (GtkButton *btn, gpointer user_data)
   browse_history_pop (&prev_source, &prev_container);
   browse (prev_source, prev_container);
 
-  if (prev_source)
-    g_object_unref (prev_source);
-  if (prev_container)
-    g_object_unref (prev_container);
+  g_clear_object (&prev_source);
+  g_clear_object (&prev_container);
 }
 
 static void
@@ -1292,12 +1278,8 @@ remove_btn_clicked_cb (GtkButton *btn, gpointer user_data)
 
   grl_source_remove (source, media, remove_cb, NULL);
 
-  if (source) {
-    g_object_unref (source);
-  }
-  if (media) {
-    g_object_unref (media);
-  }
+  g_clear_object (&source);
+  g_clear_object (&media);
 }
 
 static void
@@ -1368,9 +1350,7 @@ search_btn_clicked_cb (GtkButton *btn, gpointer user_data)
       search (source, text);
     }
 
-    if (source) {
-      g_object_unref (source);
-    }
+    g_clear_object (&source);
   }
 }
 
@@ -1411,9 +1391,7 @@ query_btn_clicked_cb (GtkButton *btn, gpointer user_data)
     text = gtk_entry_get_text (GTK_ENTRY (view->query_text));
     query (source, text);
 
-    if (source) {
-      g_object_unref (source);
-    }
+    g_clear_object (&source);
   }
 }
 
@@ -2147,16 +2125,7 @@ show_browsable_sources ()
 static void
 free_stack (GList **stack)
 {
-  GList *iter;
-  iter = *stack;
-  while (iter) {
-    if (iter->data) {
-      g_object_unref (iter->data);
-    }
-    iter = g_list_next (iter);
-  }
-  g_list_free (*stack);
-  *stack = NULL;
+  g_list_free_full (*stack, g_object_unref);
 }
 
 static void


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