libpurple/purplerequestgroup.c

changeset 42170
c9968cbf01d5
parent 42169
a35df4578814
--- a/libpurple/purplerequestgroup.c	Mon Mar 20 23:01:54 2023 -0500
+++ b/libpurple/purplerequestgroup.c	Mon Mar 20 23:04:04 2023 -0500
@@ -29,7 +29,7 @@
 
 	char *title;
 
-	GList *fields;
+	GPtrArray *fields;
 	GHashTable *invalid_fields;
 };
 
@@ -89,7 +89,7 @@
 purple_request_group_get_n_items(GListModel *model) {
 	PurpleRequestGroup *group = PURPLE_REQUEST_GROUP(model);
 
-	return g_list_length(group->fields);
+	return group->fields->len;
 }
 
 static gpointer
@@ -97,8 +97,8 @@
 	PurpleRequestGroup *group = PURPLE_REQUEST_GROUP(model);
 	PurpleRequestField *field = NULL;
 
-	field = g_list_nth_data(group->fields, index);
-	if(PURPLE_IS_REQUEST_FIELD(field)) {
+	if(index < group->fields->len) {
+		field = g_ptr_array_index(group->fields, index);
 		g_object_ref(field);
 	}
 
@@ -160,7 +160,7 @@
 
 	g_free(group->title);
 
-	g_list_free_full(group->fields, g_object_unref);
+	g_clear_pointer(&group->fields, g_ptr_array_unref);
 	g_clear_pointer(&group->invalid_fields, g_hash_table_destroy);
 
 	G_OBJECT_CLASS(purple_request_group_parent_class)->finalize(obj);
@@ -168,6 +168,7 @@
 
 static void
 purple_request_group_init(PurpleRequestGroup *group) {
+	group->fields = g_ptr_array_new_with_free_func(g_object_unref);
 	group->invalid_fields = g_hash_table_new(g_direct_hash, g_direct_equal);
 }
 
@@ -227,8 +228,8 @@
 	g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group));
 	g_return_if_fail(PURPLE_IS_REQUEST_FIELD(field));
 
-	position = g_list_length(group->fields);
-	group->fields = g_list_append(group->fields, field);
+	position = group->fields->len;
+	g_ptr_array_add(group->fields, field);
 
 	purple_request_group_notify_field_cb(G_OBJECT(field), NULL, group);
 	g_signal_connect(field, "notify::valid",

mercurial