diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-12 01:47:13 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-12 11:13:45 -0400 |
commit | c90f283be33bffde48c244e0478b63fd6798fbcf (patch) | |
tree | e148d5d553b034432288e44d7191b33a11ad74e3 | |
parent | 59df5440f3805db3e1d00b86d91a76dcb50412e4 (diff) | |
download | glib-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.c | 7 |
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) |