[retro-gtk] Use auto cleanup and clear functions where possible



commit 0f4881bcf4e8b790567104f7b8509bb58b6bca9d
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Sat Dec 19 13:41:48 2020 +0100

    Use auto cleanup and clear functions where possible
    
    This purposefuly doesn't do it for errors as they will later be handled
    in a more appropriate way.

 demos/retro-demo.c                     |  12 ++--
 retro-gtk/retro-core-descriptor.c      | 109 +++++++++------------------------
 retro-gtk/retro-core-view-controller.c |  13 +---
 retro-gtk/retro-core-view.c            |  15 ++---
 retro-gtk/retro-core.c                 |   4 +-
 retro-gtk/retro-gl-display.c           |   6 +-
 retro-gtk/retro-module-iterator.c      |  70 ++++++---------------
 retro-gtk/retro-option.c               |  10 ++-
 retro-gtk/retro-video-filter.c         |   6 +-
 retro-runner/retro-core.c              |  10 +--
 10 files changed, 71 insertions(+), 184 deletions(-)
---
diff --git a/demos/retro-demo.c b/demos/retro-demo.c
index c2b8889..80c48f0 100644
--- a/demos/retro-demo.c
+++ b/demos/retro-demo.c
@@ -22,7 +22,7 @@ retro_demo_open (GApplication  *application,
                  const gchar   *hint)
 {
   RetroDemoApplication *self;
-  char *module_path;
+  g_autofree char *module_path = NULL;
   GError *error = NULL;
 
   self = RETRO_DEMO_APPLICATION (application);
@@ -35,19 +35,17 @@ retro_demo_open (GApplication  *application,
 
   module_path = g_file_get_path (files[0]);
   self->core = retro_core_new (module_path);
-  g_free (module_path);
 
   if (self->core == NULL)
     return;
 
   if (n_files > 1) {
-    gchar **medias;
+    g_auto (GStrv) medias = NULL;
 
     medias = g_new0 (gchar *, n_files);
     for (gsize i = 1; i < n_files; i++)
       medias[i - 1] = g_file_get_uri (files[i]);
     retro_core_set_medias (self->core, (const gchar *const *) medias);
-    g_strfreev (medias);
   }
 
   retro_core_boot (self->core, &error);
@@ -72,8 +70,7 @@ retro_demo_application_finalize (GObject *object)
 {
   RetroDemoApplication *self = RETRO_DEMO_APPLICATION (object);
 
-  if (self->core != NULL)
-    g_object_unref (self->core);
+  g_clear_object (&self->core);
 
   G_OBJECT_CLASS (retro_demo_application_parent_class)->finalize (object);
 }
@@ -133,7 +130,7 @@ gint
 main (gint   argc,
       gchar *argv[])
 {
-  RetroDemoApplication *app;
+  g_autoptr (RetroDemoApplication) app = NULL;
   int status;
 
   g_set_prgname ("retro-demo");
@@ -141,7 +138,6 @@ main (gint   argc,
 
   app = retro_demo_application_new();
   status = g_application_run (G_APPLICATION (app), argc, argv);
-  g_object_unref (app);
 
   return status;
 }
diff --git a/retro-gtk/retro-core-descriptor.c b/retro-gtk/retro-core-descriptor.c
index 3a26118..87b8f3f 100644
--- a/retro-gtk/retro-core-descriptor.c
+++ b/retro-gtk/retro-core-descriptor.c
@@ -80,7 +80,7 @@ has_group_prefixed (RetroCoreDescriptor *self,
                     const gchar         *group_prefix,
                     const gchar         *group_suffix)
 {
-  gchar *group;
+  g_autofree gchar *group = NULL;
   gboolean has_group;
 
   g_assert (group_prefix != NULL);
@@ -88,7 +88,6 @@ has_group_prefixed (RetroCoreDescriptor *self,
 
   group = g_strconcat (group_prefix, group_suffix, NULL);
   has_group = g_key_file_has_group (self->key_file, group);
-  g_free (group);
 
   return has_group;
 }
@@ -100,7 +99,7 @@ has_key_prefixed (RetroCoreDescriptor  *self,
                   const gchar          *key,
                   GError              **error)
 {
-  gchar *group;
+  g_autofree gchar *group = NULL;
   gboolean has_key;
   GError *tmp_error = NULL;
 
@@ -114,14 +113,11 @@ has_key_prefixed (RetroCoreDescriptor  *self,
                                 key,
                                 &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
-    g_free (group);
     g_propagate_error (error, tmp_error);
 
     return FALSE;
   }
 
-  g_free (group);
-
   return has_key;
 }
 
@@ -132,8 +128,8 @@ get_string_prefixed (RetroCoreDescriptor  *self,
                      const gchar          *key,
                      GError              **error)
 {
-  gchar *group;
-  gchar *string;
+  g_autofree gchar *group = NULL;
+  g_autofree gchar *string = NULL;
   GError *tmp_error = NULL;
 
   g_assert (group_prefix != NULL);
@@ -146,16 +142,10 @@ get_string_prefixed (RetroCoreDescriptor  *self,
                                   group,
                                   key,
                                   &tmp_error);
-  if (G_UNLIKELY (tmp_error != NULL)) {
-    g_free (group);
-    g_propagate_error (error, tmp_error);
-
+  if (G_UNLIKELY (tmp_error != NULL))
     return NULL;
-  }
 
-  g_free (group);
-
-  return string;
+  return g_steal_pointer (&string);
 }
 
 static gchar **
@@ -166,8 +156,8 @@ get_string_list_prefixed (RetroCoreDescriptor  *self,
                           gsize                *length,
                           GError              **error)
 {
-  gchar *group;
-  gchar **list;
+  g_autofree gchar *group = NULL;
+  g_auto (GStrv) list = NULL;
   GError *tmp_error = NULL;
 
   g_assert (group_prefix != NULL);
@@ -182,15 +172,12 @@ get_string_list_prefixed (RetroCoreDescriptor  *self,
                                      length,
                                      &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
-  g_free (group);
     g_propagate_error (error, tmp_error);
 
     return NULL;
   }
 
-  g_free (group);
-
-  return list;
+  return g_steal_pointer (&list);
 }
 
 static void
@@ -279,8 +266,7 @@ check_platform_group (RetroCoreDescriptor  *self,
                       GError              **error)
 {
   gboolean has_key;
-  gchar **firmwares;
-  gchar *firmware_group;
+  g_auto (GStrv) firmwares = NULL;
   GError *tmp_error = NULL;
 
   g_assert (group != NULL);
@@ -315,6 +301,8 @@ check_platform_group (RetroCoreDescriptor  *self,
   }
 
   for (GStrv firmware_p = firmwares; *firmware_p != NULL; firmware_p++) {
+    g_autofree gchar *firmware_group = NULL;
+
     firmware_group = g_strconcat (FIRMWARE_GROUP_PREFIX, *firmware_p, NULL);
     if (!g_key_file_has_group (self->key_file, firmware_group)) {
       g_set_error (error,
@@ -326,16 +314,9 @@ check_platform_group (RetroCoreDescriptor  *self,
                    firmware_group,
                    group);
 
-      g_free (firmware_group);
-      g_strfreev (firmwares);
-
       return;
     }
-
-    g_free (firmware_group);
   }
-
-  g_strfreev (firmwares);
 }
 
 static void
@@ -412,16 +393,15 @@ retro_core_descriptor_has_icon (RetroCoreDescriptor  *self,
 gchar *
 retro_core_descriptor_get_uri (RetroCoreDescriptor *self)
 {
-  GFile *file;
-  gchar *uri;
+  g_autoptr (GFile) file = NULL;
+  g_autofree gchar *uri = NULL;
 
   g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL);
 
   file = g_file_new_for_path (self->filename);
   uri = g_file_get_uri (file);
-  g_object_unref (file);
 
-  return uri;
+  return g_steal_pointer (&uri);
 }
 
 /**
@@ -453,7 +433,7 @@ gboolean
 retro_core_descriptor_get_is_game (RetroCoreDescriptor  *self,
                                    GError              **error)
 {
-  gchar *type;
+  g_autofree gchar *type = NULL;
   gboolean is_game;
   GError *tmp_error = NULL;
 
@@ -470,7 +450,6 @@ retro_core_descriptor_get_is_game (RetroCoreDescriptor  *self,
   }
 
   is_game = g_strcmp0 (type, TYPE_GAME) == 0;
-  g_free (type);
 
   return is_game;
 }
@@ -488,7 +467,7 @@ gboolean
 retro_core_descriptor_get_is_emulator (RetroCoreDescriptor  *self,
                                        GError              **error)
 {
-  gchar *type;
+  g_autofree gchar *type = NULL;
   gboolean is_emulator;
   GError *tmp_error = NULL;
 
@@ -505,7 +484,6 @@ retro_core_descriptor_get_is_emulator (RetroCoreDescriptor  *self,
   }
 
   is_emulator = g_strcmp0 (type, TYPE_EMULATOR) == 0;
-  g_free (type);
 
   return is_emulator;
 }
@@ -544,7 +522,7 @@ GIcon *
 retro_core_descriptor_get_icon (RetroCoreDescriptor  *self,
                                 GError              **error)
 {
-  gchar *icon_name;
+  g_autofree gchar *icon_name = NULL;
   GIcon *icon;
   GError *tmp_error = NULL;
 
@@ -561,7 +539,6 @@ retro_core_descriptor_get_icon (RetroCoreDescriptor  *self,
   }
 
   icon = G_ICON (g_themed_icon_new (icon_name));
-  g_free (icon_name);
 
   return icon;
 }
@@ -600,41 +577,31 @@ GFile *
 retro_core_descriptor_get_module_file (RetroCoreDescriptor  *self,
                                        GError              **error)
 {
-  GFile *file;
-  GFile *dir;
-  gchar *module;
-  GFile *module_file;
+  g_autoptr (GFile) file = NULL;
+  g_autoptr (GFile) dir = NULL;
+  g_autofree gchar *module = NULL;
+  g_autoptr (GFile) module_file = NULL;
   GError *tmp_error = NULL;
 
   g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL);
 
   file = g_file_new_for_path (self->filename);
   dir = g_file_get_parent (file);
-  g_object_unref (file);
   if (dir == NULL)
     return NULL;
 
   module = retro_core_descriptor_get_module (self, &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
     g_propagate_error (error, tmp_error);
-    g_object_unref (dir);
 
     return NULL;
   }
 
   module_file = g_file_get_child (dir, module);
-  if (!g_file_query_exists (module_file, NULL)) {
-    g_object_unref (dir);
-    g_free (module);
-    g_object_unref (module_file);
-
+  if (!g_file_query_exists (module_file, NULL))
     return NULL;
-  }
 
-  g_object_unref (dir);
-  g_free (module);
-
-  return module_file;
+  return g_steal_pointer (&module_file);
 }
 
 /**
@@ -876,7 +843,7 @@ retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor  *self,
                                                  const gchar          *firmware,
                                                  GError              **error)
 {
-  gchar *group;
+  g_autofree gchar *group = NULL;
   gboolean is_mandatory;
   GError *tmp_error = NULL;
 
@@ -889,14 +856,11 @@ retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor  *self,
                                          FIRMWARE_MANDATORY_KEY,
                                          &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
-    g_free (group);
     g_propagate_error (error, tmp_error);
 
     return FALSE;
   }
 
-  g_free (group);
-
   return is_mandatory;
 }
 
@@ -917,7 +881,7 @@ retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor  *se
                                                         const gchar * const  *mime_types,
                                                         GError              **error)
 {
-  gchar **supported_mime_types;
+  g_auto (GStrv) supported_mime_types = NULL;
   gsize supported_mime_types_length;
   GError *tmp_error = NULL;
 
@@ -938,13 +902,8 @@ retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor  *se
 
   for (; *mime_types != NULL; mime_types++)
     if (!g_strv_contains ((const char * const *) supported_mime_types,
-                          *mime_types)) {
-      g_strfreev (supported_mime_types);
-
+                          *mime_types))
       return FALSE;
-    }
-
-  g_strfreev (supported_mime_types);
 
   return TRUE;
 }
@@ -962,8 +921,8 @@ RetroCoreDescriptor *
 retro_core_descriptor_new (const gchar  *filename,
                            GError      **error)
 {
-  RetroCoreDescriptor *self;
-  gchar ** groups;
+  g_autoptr (RetroCoreDescriptor) self = NULL;
+  g_auto (GStrv) groups = NULL;
   gsize groups_length;
   GError *tmp_error = NULL;
 
@@ -977,7 +936,6 @@ retro_core_descriptor_new (const gchar  *filename,
                              G_KEY_FILE_NONE,
                              &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
-    g_object_unref (self);
     g_propagate_error (error, tmp_error);
 
     return NULL;
@@ -985,7 +943,6 @@ retro_core_descriptor_new (const gchar  *filename,
 
   check_libretro_group (self, &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
-    g_object_unref (self);
     g_propagate_error (error, tmp_error);
 
     return NULL;
@@ -997,8 +954,6 @@ retro_core_descriptor_new (const gchar  *filename,
                           PLATFORM_GROUP_PREFIX)) {
       check_platform_group (self, groups[i], &tmp_error);
       if (G_UNLIKELY (tmp_error != NULL)) {
-        g_strfreev (groups);
-        g_object_unref (self);
         g_propagate_error (error, tmp_error);
 
         return NULL;
@@ -1008,8 +963,6 @@ retro_core_descriptor_new (const gchar  *filename,
                                FIRMWARE_GROUP_PREFIX)) {
       check_firmware_group (self, groups[i], &tmp_error);
       if (G_UNLIKELY (tmp_error != NULL)) {
-        g_strfreev (groups);
-        g_object_unref (self);
         g_propagate_error (error, tmp_error);
 
         return NULL;
@@ -1017,7 +970,5 @@ retro_core_descriptor_new (const gchar  *filename,
     }
   }
 
-  g_strfreev (groups);
-
-  return self;
+  return g_steal_pointer (&self);
 }
diff --git a/retro-gtk/retro-core-view-controller.c b/retro-gtk/retro-core-view-controller.c
index 94f8d45..a5628d4 100644
--- a/retro-gtk/retro-core-view-controller.c
+++ b/retro-gtk/retro-core-view-controller.c
@@ -24,20 +24,17 @@ retro_core_view_controller_get_input_state (RetroController *base,
                                             RetroInput      *input)
 {
   RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (base);
-  gpointer view;
+  g_autoptr (RetroCoreView) view = NULL;
   gint16 result;
 
   if (retro_input_get_controller_type (input) != self->controller_type)
     return 0;
 
   view = g_weak_ref_get (&self->view);
-
   if (view == NULL)
     return 0;
 
-  result = retro_core_view_get_input_state (RETRO_CORE_VIEW (view), input);
-
-  g_object_unref (G_OBJECT (view));
+  result = retro_core_view_get_input_state (view, input);
 
   return result;
 }
@@ -54,18 +51,14 @@ static guint64
 retro_core_view_controller_get_capabilities (RetroController *base)
 {
   RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (base);
-  gpointer view;
+  g_autoptr (GObject) view = g_weak_ref_get (&self->view);
   guint64 capabilities;
 
-  view = g_weak_ref_get (&self->view);
-
   if (view == NULL)
     return 0;
 
   capabilities = retro_core_view_get_controller_capabilities (RETRO_CORE_VIEW (view));
 
-  g_object_unref (G_OBJECT (view));
-
   return capabilities & (1 << self->controller_type);
 }
 
diff --git a/retro-gtk/retro-core-view.c b/retro-gtk/retro-core-view.c
index d5965b6..c93506a 100644
--- a/retro-gtk/retro-core-view.c
+++ b/retro-gtk/retro-core-view.c
@@ -129,7 +129,7 @@ grab (RetroCoreView *self,
 {
   GdkSeat *seat;
   GdkDisplay *display;
-  GdkCursor *cursor;
+  g_autoptr (GdkCursor) cursor = NULL;
   GdkScreen *screen = NULL;
   GdkMonitor *monitor;
   GdkRectangle monitor_geometry;
@@ -138,13 +138,6 @@ grab (RetroCoreView *self,
   g_assert (window != NULL);
   g_assert (event != NULL);
 
-  if (self->grabbed_device != NULL)
-    g_object_unref (self->grabbed_device);
-
-  if (self->grabbed_screen != NULL)
-    g_object_unref (self->grabbed_screen);
-
-  self->grabbed_device = g_object_ref (device);
   seat = gdk_device_get_seat (device);
   display = gdk_device_get_display (device);
   cursor = gdk_cursor_new_for_display (display, GDK_BLANK_CURSOR);
@@ -153,17 +146,17 @@ grab (RetroCoreView *self,
   gdk_monitor_get_geometry (monitor, &monitor_geometry);
 
   gdk_device_get_position (device, &screen, &self->position_on_grab_x, &self->position_on_grab_y);
-  self->grabbed_screen = g_object_ref (screen);
   self->screen_center_x = monitor_geometry.x + monitor_geometry.width / 2;
   self->screen_center_y = monitor_geometry.y + monitor_geometry.height / 2;
   self->mouse_x_delta = 0;
   self->mouse_y_delta = 0;
 
+  g_set_object (&self->grabbed_device, device);
+  g_set_object (&self->grabbed_screen, screen);
+
   recenter_pointer (self);
 
   g_signal_emit (self, signals[SIGNAL_CONTROLLER_STATE_CHANGED], 0);
-
-  g_object_unref (cursor);
 }
 
 static void
diff --git a/retro-gtk/retro-core.c b/retro-gtk/retro-core.c
index decd61d..6d5c6e2 100644
--- a/retro-gtk/retro-core.c
+++ b/retro-gtk/retro-core.c
@@ -994,15 +994,13 @@ variables_set_cb (IpcRunner *runner,
                   GVariant  *data,
                   RetroCore *self)
 {
-  GVariantIter *iter;
+  g_autoptr (GVariantIter) iter = NULL;
   gchar *key, *value;
 
   g_variant_get (data, "a(ss)", &iter);
 
   while (g_variant_iter_loop (iter, "(ss)", &key, &value))
     insert_variable (self, key, value);
-
-  g_variant_iter_free (iter);
 }
 
 static void
diff --git a/retro-gtk/retro-gl-display.c b/retro-gtk/retro-gl-display.c
index c637e34..17e89c7 100644
--- a/retro-gtk/retro-gl-display.c
+++ b/retro-gtk/retro-gl-display.c
@@ -317,10 +317,8 @@ retro_gl_display_finalize (GObject *object)
   self->texture = 0;
   for (RetroVideoFilter filter = 0; filter < RETRO_VIDEO_FILTER_COUNT; filter++)
     g_clear_object (&self->glsl_filter[filter]);
-  if (self->core != NULL)
-    g_object_unref (self->core);
-  if (self->pixbuf != NULL)
-    g_object_unref (self->pixbuf);
+  g_clear_object (&self->core);
+  g_clear_object (&self->pixbuf);
 
   G_OBJECT_CLASS (retro_gl_display_parent_class)->finalize (object);
 }
diff --git a/retro-gtk/retro-module-iterator.c b/retro-gtk/retro-module-iterator.c
index da29782..03ffdc5 100644
--- a/retro-gtk/retro-module-iterator.c
+++ b/retro-gtk/retro-module-iterator.c
@@ -73,15 +73,13 @@ new_for_subdirectory (const gchar *lookup_path,
 static gboolean
 was_current_directory_visited (RetroModuleIterator *self)
 {
-  GFile *current_directory_file;
-  gchar *current_directory_path;
+  g_autoptr (GFile) current_directory_file = NULL;
+  g_autofree gchar *current_directory_path = NULL;
   gboolean result;
 
   current_directory_file = g_file_new_for_path (self->directories[self->current_directory]);
   current_directory_path = g_file_get_path (current_directory_file);
-  g_object_unref (current_directory_file);
   result = g_hash_table_contains (self->visited, current_directory_path);
-  g_free (current_directory_path);
 
   return result;
 }
@@ -89,12 +87,11 @@ was_current_directory_visited (RetroModuleIterator *self)
 static void
 set_current_directory_as_visited (RetroModuleIterator *self)
 {
-  GFile *current_directory_file;
-  gchar *current_directory_path;
+  g_autoptr (GFile) current_directory_file = NULL;
+  g_autofree gchar *current_directory_path = NULL;
 
   current_directory_file = g_file_new_for_path (self->directories[self->current_directory]);
   current_directory_path = g_file_get_path (current_directory_file);
-  g_object_unref (current_directory_file);
   g_hash_table_add (self->visited, current_directory_path);
 }
 
@@ -102,18 +99,13 @@ static gboolean
 next_in_sub_directory (RetroModuleIterator *self)
 {
   if (retro_module_iterator_next (self->sub_directory)) {
-    if (self->core_descriptor != NULL)
-      g_object_unref (self->core_descriptor);
-
+    g_clear_object (&self->core_descriptor);
     self->core_descriptor = retro_module_iterator_get (self->sub_directory);
 
     return TRUE;
   }
 
-  if (self->sub_directory != NULL) {
-    g_object_unref (self->sub_directory);
-    self->sub_directory = NULL;
-  }
+  g_clear_object (&self->sub_directory);
 
   return FALSE;
 }
@@ -124,12 +116,9 @@ iterate_next_in_current_path (RetroModuleIterator  *self,
                               GFileInfo            *info,
                               GError              **error)
 {
-  const gchar *sub_directory_basename;
-  GFile *sub_directory_file;
-  gchar *sub_directory_path;
   const gchar *core_descriptor_basename;
-  GFile *core_descriptor_file;
-  gchar *core_descriptor_path;
+  g_autoptr (GFile) core_descriptor_file = NULL;
+  g_autofree gchar *core_descriptor_path = NULL;
   RetroCoreDescriptor *core_descriptor;
   GError *tmp_error = NULL;
 
@@ -139,19 +128,18 @@ iterate_next_in_current_path (RetroModuleIterator  *self,
   if (self->recursive &&
       g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY &&
       self->sub_directory == NULL) {
+    const gchar *sub_directory_basename;
+    g_autoptr (GFile) sub_directory_file = NULL;
+    g_autofree gchar *sub_directory_path = NULL;
+
     sub_directory_basename = g_file_info_get_name (info);
     sub_directory_file = g_file_get_child (directory, sub_directory_basename);
     sub_directory_path = g_file_get_path (sub_directory_file);
-      g_object_unref (sub_directory_file);
-
-    if (g_hash_table_contains (self->visited, sub_directory_path)) {
-      g_free (sub_directory_path);
 
+    if (g_hash_table_contains (self->visited, sub_directory_path))
       return FALSE;
-    }
 
     self->sub_directory = new_for_subdirectory (sub_directory_path, self->visited);
-    g_free (sub_directory_path);
 
     return next_in_sub_directory (self);
   }
@@ -162,18 +150,15 @@ iterate_next_in_current_path (RetroModuleIterator  *self,
 
   core_descriptor_file = g_file_get_child (directory, core_descriptor_basename);
   core_descriptor_path = g_file_get_path (core_descriptor_file);
-  g_object_unref (core_descriptor_file);
   core_descriptor = retro_core_descriptor_new (core_descriptor_path, &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
     g_debug ("%s", tmp_error->message);
 
     g_error_free (tmp_error);
-    g_free (core_descriptor_path);
 
     return FALSE;
   }
 
-  g_free (core_descriptor_path);
   g_clear_object (&self->core_descriptor);
   self->core_descriptor = core_descriptor;
 
@@ -184,10 +169,8 @@ static gboolean
 next_in_current_path (RetroModuleIterator  *self,
                       GError              **error)
 {
-  GFile *directory = NULL;
-  GFileInfo *info = NULL;
+  g_autoptr (GFile) directory = NULL;
   gboolean found = FALSE;
-
   GError *tmp_error = NULL;
 
   if (self->sub_directory != NULL && next_in_sub_directory (self))
@@ -204,28 +187,21 @@ next_in_current_path (RetroModuleIterator  *self,
                                  &tmp_error);
     if (G_UNLIKELY (tmp_error != NULL)) {
       g_propagate_error (error, tmp_error);
-      g_object_unref (directory);
       g_clear_object (&self->file_enumerator);
 
       return FALSE;
     }
   }
 
-  if (self->file_enumerator == NULL) {
-    g_object_unref (directory);
-
+  if (self->file_enumerator == NULL)
     return FALSE;
-  }
 
   while (TRUE) {
-    if (info != NULL)
-      g_object_unref (info);
+    g_autoptr (GFileInfo) info = NULL;
 
     info = g_file_enumerator_next_file (self->file_enumerator, NULL, &tmp_error);
     if (G_UNLIKELY (tmp_error != NULL)) {
       g_propagate_error (error, tmp_error);
-      g_clear_object (&info);
-      g_object_unref (directory);
 
       return FALSE;
     }
@@ -236,22 +212,15 @@ next_in_current_path (RetroModuleIterator  *self,
     found = iterate_next_in_current_path (self, directory, info, &tmp_error);
     if (G_UNLIKELY (tmp_error != NULL)) {
       g_propagate_error (error, tmp_error);
-      g_object_unref (info);
-      g_object_unref (directory);
 
       return FALSE;
     }
 
-    if (found) {
-      g_object_unref (info);
-      g_object_unref (directory);
-
+    if (found)
       return TRUE;
-    }
   }
 
   g_clear_object (&self->file_enumerator);
-  g_object_unref (directory);
 
   return FALSE;
 }
@@ -313,10 +282,7 @@ retro_module_iterator_next (RetroModuleIterator *self)
 
   g_clear_object (&self->file_enumerator);
   g_clear_object (&self->core_descriptor);
-  if (self->sub_directory != NULL) {
-    g_object_unref (self->sub_directory);
-    self->sub_directory = NULL;
-  }
+  g_clear_object (&self->sub_directory);
 
   return FALSE;
 }
diff --git a/retro-gtk/retro-option.c b/retro-gtk/retro-option.c
index 01b3c36..eff2654 100644
--- a/retro-gtk/retro-option.c
+++ b/retro-gtk/retro-option.c
@@ -185,9 +185,9 @@ retro_option_new (const gchar  *key,
                   const gchar  *definition,
                   GError      **error)
 {
-  RetroOption *self;
+  g_autoptr (RetroOption) self;
   gchar *description_separator;
-  gchar **values;
+  g_auto(GStrv) values = NULL;
 
   g_return_val_if_fail (key != NULL, NULL);
   g_return_val_if_fail (definition != NULL, NULL);
@@ -204,8 +204,6 @@ retro_option_new (const gchar  *key,
 
   values = g_strsplit (description_separator + 2, "|", 0);
   if (G_UNLIKELY (*values == NULL)) {
-    g_strfreev (values);
-
     g_set_error_literal (error,
                          RETRO_OPTION_ERROR,
                          RETRO_OPTION_ERROR_NO_VALUES,
@@ -219,7 +217,7 @@ retro_option_new (const gchar  *key,
   self->key = g_strdup (key);
   self->description = g_strndup (definition,
                                  description_separator - definition);
-  self->values = values;
+  self->values = g_steal_pointer (&values);
 
-  return self;
+  return g_steal_pointer (&self);
 }
diff --git a/retro-gtk/retro-video-filter.c b/retro-gtk/retro-video-filter.c
index 9367c5c..8667032 100644
--- a/retro-gtk/retro-video-filter.c
+++ b/retro-gtk/retro-video-filter.c
@@ -21,9 +21,9 @@
 RetroVideoFilter
 retro_video_filter_from_string (const gchar *filter)
 {
-  GEnumClass* enum_class;
+  g_autoptr (GEnumClass) enum_class = NULL;
+  GEnumValue* eval;
   RetroVideoFilter result;
-  GEnumValue* eval = NULL;
 
   g_return_val_if_fail (filter != NULL, RETRO_VIDEO_FILTER_SMOOTH);
 
@@ -34,7 +34,5 @@ retro_video_filter_from_string (const gchar *filter)
     RETRO_VIDEO_FILTER_SMOOTH :
     (RetroVideoFilter) eval->value;
 
-  g_type_class_unref (enum_class);
-
   return result;
 }
diff --git a/retro-runner/retro-core.c b/retro-runner/retro-core.c
index 002618b..7ec0936 100644
--- a/retro-runner/retro-core.c
+++ b/retro-runner/retro-core.c
@@ -116,13 +116,11 @@ retro_core_finalize (GObject *object)
   deinit = retro_module_get_deinit (self->module);
   deinit ();
 
-  if (self->media_uris != NULL)
-    g_strfreev (self->media_uris);
+  g_clear_pointer (&self->media_uris, g_strfreev);
 
   g_object_unref (self->module);
   g_object_unref (self->framebuffer);
-  if (self->default_controller)
-    g_object_unref (self->default_controller);
+  g_clear_object (&self->default_controller);
   g_hash_table_unref (self->controllers);
   g_hash_table_unref (self->variables);
   g_hash_table_unref (self->variable_overrides);
@@ -1321,9 +1319,7 @@ retro_core_set_medias (RetroCore           *self,
   g_return_if_fail (RETRO_IS_CORE (self));
   g_return_if_fail (!retro_core_get_is_initiated (self));
 
-  if (self->media_uris != NULL)
-    g_strfreev (self->media_uris);
-
+  g_clear_pointer (&self->media_uris, g_strfreev);
   self->media_uris = g_strdupv ((gchar **) uris);
 }
 


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