[retro-gtk] reftest-file: Use autocleanups
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [retro-gtk] reftest-file: Use autocleanups
- Date: Sun, 11 Apr 2021 15:38:50 +0000 (UTC)
commit b1e21637f61df0451e4826ad7218da3d14906717
Author: Adrien Plazas <kekun plazas laposte net>
Date: Sun Apr 11 17:07:19 2021 +0200
reftest-file: Use autocleanups
This makes the code safer and more concise.
tests/retro-reftest-file.c | 108 ++++++++++++++++++---------------------------
1 file changed, 42 insertions(+), 66 deletions(-)
---
diff --git a/tests/retro-reftest-file.c b/tests/retro-reftest-file.c
index 1b5ba1b..0ce160c 100644
--- a/tests/retro-reftest-file.c
+++ b/tests/retro-reftest-file.c
@@ -101,7 +101,7 @@ static void
retro_reftest_file_constructed (GObject *object)
{
RetroReftestFile *self = (RetroReftestFile *) object;
- gchar *path;
+ g_autofree gchar *path = NULL;
GError *error = NULL;
self->key_file = g_key_file_new ();
@@ -113,8 +113,6 @@ retro_reftest_file_constructed (GObject *object)
g_clear_error (&error);
}
- g_free (path);
-
G_OBJECT_CLASS (retro_reftest_file_parent_class)->constructed (object);
}
@@ -125,10 +123,8 @@ retro_reftest_file_finalize (GObject *object)
g_object_unref (self->file);
g_key_file_unref (self->key_file);
- if (self->path != NULL)
- g_free (self->path);
- if (self->frames != NULL)
- g_hash_table_unref (self->frames);
+ g_clear_pointer (&self->path, g_free);
+ g_clear_pointer (&self->frames, g_hash_table_unref);
G_OBJECT_CLASS (retro_reftest_file_parent_class)->finalize (object);
}
@@ -202,16 +198,14 @@ static GFile *
get_sibling (RetroReftestFile *self,
const gchar *path)
{
- GFile *parent, *sibling;
+ g_autoptr (GFile) parent = NULL;
if (path[0] == '/')
return g_file_new_for_path (path);
parent = g_file_get_parent (self->file);
- sibling = g_file_get_child (parent, path);
- g_object_unref (parent);
- return sibling;
+ return g_file_get_child (parent, path);
}
const gchar *
@@ -232,8 +226,8 @@ retro_reftest_file_peek_path (RetroReftestFile *self)
}
static guint
-str_to_uint (gchar *string,
- GError **error)
+str_to_uint (const gchar *string,
+ GError **error)
{
gchar *string_end;
guint64 number_long;
@@ -356,13 +350,12 @@ retro_reftest_file_get_core (RetroReftestFile *self,
GError **error)
{
RetroCore *core;
- gchar *key_file_core;
- GFile *core_file;
- gchar *path;
- gchar **key_file_medias;
+ g_autofree gchar *key_file_core = NULL;
+ g_autoptr (GFile) core_file = NULL;
+ g_autofree gchar *path = NULL;
+ g_auto (GStrv) key_file_medias = NULL;
gsize key_file_medias_length = 0;
- gchar **media_uris;
- GFile *media_file;
+ g_auto (GStrv) media_uris = NULL;
GError *tmp_error = NULL;
key_file_core = g_key_file_get_string (self->key_file,
@@ -376,11 +369,8 @@ retro_reftest_file_get_core (RetroReftestFile *self,
}
core_file = get_sibling (self, key_file_core);
- g_free (key_file_core);
path = g_file_get_path (core_file);
- g_object_unref (core_file);
core = retro_core_new (path);
- g_free (path);
key_file_medias = g_key_file_get_string_list (self->key_file,
RETRO_REFTEST_FILE_RETRO_REFTEST_GROUP,
@@ -392,22 +382,18 @@ retro_reftest_file_get_core (RetroReftestFile *self,
if (key_file_medias == NULL)
return core;
- if (key_file_medias_length == 0) {
- g_strfreev (key_file_medias);
-
+ if (key_file_medias_length == 0)
return core;
- }
media_uris = g_new0 (gchar *, key_file_medias_length + 1);
for (gsize i = 0; i < key_file_medias_length; i++) {
+ g_autoptr (GFile) media_file = NULL;
+
media_file = get_sibling (self, key_file_medias[i]);
media_uris[i] = g_file_get_uri (media_file);
- g_object_unref (media_file);
}
- g_strfreev (key_file_medias);
retro_core_set_medias (core, (const gchar* const *) media_uris);
- g_strfreev (media_uris);
return core;
}
@@ -422,9 +408,9 @@ GHashTable *
retro_reftest_file_get_options (RetroReftestFile *self,
GError **error)
{
- gchar **keys, **values;
+ g_auto (GStrv) keys = NULL;
gsize keys_length = 0;
- GHashTable *options;
+ g_autoptr (GHashTable) options = NULL;
GError *tmp_error = NULL;
keys = g_key_file_get_keys (self->key_file,
@@ -439,6 +425,8 @@ retro_reftest_file_get_options (RetroReftestFile *self,
options = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_strfreev);
for (gsize i = 0; i < keys_length; i++) {
+ g_auto (GStrv) values = NULL;
+
values = g_key_file_get_string_list (self->key_file,
RETRO_REFTEST_FILE_OPTIONS_GROUP,
keys[i],
@@ -446,18 +434,14 @@ retro_reftest_file_get_options (RetroReftestFile *self,
&tmp_error);
if (G_UNLIKELY (tmp_error != NULL)) {
g_propagate_error (error, tmp_error);
- g_strfreev (keys);
- g_hash_table_unref (options);
return NULL;
}
- g_hash_table_insert (options, g_strdup (keys[i]), values);
+ g_hash_table_insert (options, g_strdup (keys[i]), g_steal_pointer (&values));
}
- g_strfreev (keys);
-
- return options;
+ return g_steal_pointer (&options);
}
GArray *
@@ -466,8 +450,8 @@ retro_reftest_file_get_controllers (RetroReftestFile *self,
GError **error)
{
gboolean has_controllers;
- gchar **controller_names;
- GArray *controllers;
+ g_auto (GStrv) controller_names = NULL;
+ g_autoptr (GArray) controllers = NULL;
RetroControllerType type;
GError *tmp_error = NULL;
@@ -505,17 +489,15 @@ retro_reftest_file_get_controllers (RetroReftestFile *self,
g_array_index (controllers, RetroTestController *, i) = retro_test_controller_new (type);
}
- g_strfreev (controller_names);
- return controllers;
+ return g_steal_pointer (&controllers);
}
GList *
retro_reftest_file_get_frames (RetroReftestFile *self)
{
gsize groups_length = 0;
- gchar **groups;
- gchar *frame_number_string;
+ g_auto (GStrv) groups = NULL;
guint frame_number;
guint *key;
GError *error = NULL;
@@ -530,6 +512,8 @@ retro_reftest_file_get_frames (RetroReftestFile *self)
groups = g_key_file_get_groups (self->key_file, &groups_length);
for (gsize i = 0; i < groups_length; i++) {
+ const gchar *frame_number_string;
+
if (!g_str_has_prefix (groups[i], RETRO_REFTEST_FILE_FRAME_GROUP_PREFIX))
continue;
@@ -557,8 +541,6 @@ retro_reftest_file_get_frames (RetroReftestFile *self)
g_hash_table_insert (self->frames, key, g_strdup (groups[i]));
}
- g_strfreev (groups);
-
return g_list_sort (g_hash_table_get_keys (self->frames),
(GCompareFunc) uint_compare);
}
@@ -601,8 +583,7 @@ retro_reftest_file_get_video (RetroReftestFile *self,
guint frame,
GError **error)
{
- gchar *key_file_video;
- GFile *video_file;
+ g_autofree gchar *key_file_video = NULL;
GError *tmp_error = NULL;
key_file_video = g_key_file_get_string (self->key_file,
@@ -615,10 +596,7 @@ retro_reftest_file_get_video (RetroReftestFile *self,
return NULL;
}
- video_file = get_sibling (self, key_file_video);
- g_free (key_file_video);
-
- return video_file;
+ return get_sibling (self, key_file_video);
}
GHashTable *
@@ -628,10 +606,7 @@ retro_reftest_file_get_controller_states (RetroReftestFile *self,
{
GHashTable *controllers;
gchar *group;
- gchar **keys;
- gchar **inputs;
- guint *controller_number;
- gchar *controller_number_string;
+ g_auto (GStrv) keys = NULL;
RetroControllerState *state;
GArray *states;
GError *tmp_error = NULL;
@@ -647,6 +622,10 @@ retro_reftest_file_get_controller_states (RetroReftestFile *self,
controllers = g_hash_table_new_full (g_int_hash, g_int_equal, g_free, (GDestroyNotify) g_array_unref);
for (GStrv key_i = keys; *key_i != NULL; key_i++) {
+ g_auto (GStrv) inputs = NULL;
+ g_autofree guint *controller_number = NULL;
+ const gchar *controller_number_string;
+
if (!g_str_has_prefix (*key_i, RETRO_REFTEST_FILE_FRAME_CONTROLLER_PREFIX))
continue;
@@ -656,12 +635,18 @@ retro_reftest_file_get_controller_states (RetroReftestFile *self,
if (G_UNLIKELY (tmp_error != NULL)) {
g_critical ("Invalid controller key [%s]: %s", *key_i, tmp_error->message);
g_clear_error (&tmp_error);
- g_free (controller_number);
continue;
}
inputs = g_key_file_get_string_list (self->key_file, group, *key_i, NULL, &tmp_error);
+ if (G_UNLIKELY (tmp_error != NULL)) {
+ g_critical ("%s", tmp_error->message);
+ g_clear_error (&tmp_error);
+
+ continue;
+ }
+
states = g_array_new (TRUE, TRUE, sizeof (RetroControllerState *));
g_array_set_clear_func (states, (GDestroyNotify) g_pointer_free);
for (GStrv input_i = inputs; *input_i != NULL; input_i++) {
@@ -674,18 +659,9 @@ retro_reftest_file_get_controller_states (RetroReftestFile *self,
g_array_append_val (states, state);
}
- g_strfreev (inputs);
- g_hash_table_insert (controllers, controller_number, states);
- if (G_UNLIKELY (tmp_error != NULL)) {
- g_critical ("%s", tmp_error->message);
- g_clear_error (&tmp_error);
- g_free (controller_number);
-
- continue;
- }
+ g_hash_table_insert (controllers, g_steal_pointer (&controller_number), states);
}
- g_strfreev (keys);
return controllers;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]