summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-09-12 01:47:13 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-09-12 11:13:45 -0400
commitc90f283be33bffde48c244e0478b63fd6798fbcf (patch)
treee148d5d553b034432288e44d7191b33a11ad74e3
parent59df5440f3805db3e1d00b86d91a76dcb50412e4 (diff)
downloadglib-c90f283be33bffde48c244e0478b63fd6798fbcf.tar.gz
Speed up g_dataset_id_dup_data
This code is used in the property notification path, so it better be fast. This commit removes a g_return_if_fail check and treats the common case of just a single data element better.
-rw-r--r--glib/gdataset.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/glib/gdataset.c b/glib/gdataset.c
index 4c02d3620..71aaa8eae 100644
--- a/glib/gdataset.c
+++ b/glib/gdataset.c
@@ -849,16 +849,14 @@ g_datalist_id_dup_data (GData **datalist,
GData *d;
GDataElt *data, *data_end;
- g_return_val_if_fail (datalist != NULL, NULL);
-
g_datalist_lock (datalist);
d = G_DATALIST_GET_POINTER (datalist);
if (d)
{
data = d->data;
- data_end = data + d->len - 1;
- while (data <= data_end)
+ data_end = data + d->len;
+ do
{
if (data->key == key_id)
{
@@ -867,6 +865,7 @@ g_datalist_id_dup_data (GData **datalist,
}
data++;
}
+ while (data < data_end);
}
if (dup_func)