contentformats: Guarantee that we return NULL for no elements

... and add an assertion that checks this does happen.
This commit is contained in:
Benjamin Otte
2020-09-18 05:52:53 +02:00
parent 93862561c9
commit 57431a4afd

View File

@@ -121,6 +121,9 @@ gdk_content_formats_new_take (GType * gtypes,
GdkContentFormats *result = g_slice_new0 (GdkContentFormats);
result->ref_count = 1;
g_assert (n_mime_types > 0 || mime_types == NULL);
g_assert (n_gtypes > 0 || gtypes == NULL);
result->gtypes = gtypes;
result->n_gtypes = n_gtypes;
result->mime_types = mime_types;
@@ -650,19 +653,33 @@ gdk_content_formats_builder_to_formats (GdkContentFormatsBuilder *builder)
g_return_val_if_fail (builder != NULL, NULL);
gtypes = g_new (GType, builder->n_gtypes + 1);
i = builder->n_gtypes;
gtypes[i--] = G_TYPE_INVALID;
/* add backwards because most important type is last in the list */
for (l = builder->gtypes; l; l = l->next)
gtypes[i--] = GPOINTER_TO_SIZE (l->data);
if (builder->n_gtypes == 0)
{
gtypes = NULL;
}
else
{
gtypes = g_new (GType, builder->n_gtypes + 1);
i = builder->n_gtypes;
gtypes[i--] = G_TYPE_INVALID;
/* add backwards because most important type is last in the list */
for (l = builder->gtypes; l; l = l->next)
gtypes[i--] = GPOINTER_TO_SIZE (l->data);
}
mime_types = g_new (const char *, builder->n_mime_types + 1);
i = builder->n_mime_types;
mime_types[i--] = NULL;
/* add backwards because most important type is last in the list */
for (l = builder->mime_types; l; l = l->next)
mime_types[i--] = l->data;
if (builder->n_mime_types == 0)
{
mime_types = NULL;
}
else
{
mime_types = g_new (const char *, builder->n_mime_types + 1);
i = builder->n_mime_types;
mime_types[i--] = NULL;
/* add backwards because most important type is last in the list */
for (l = builder->mime_types; l; l = l->next)
mime_types[i--] = l->data;
}
result = gdk_content_formats_new_take (gtypes, builder->n_gtypes,
mime_types, builder->n_mime_types);