summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-25 16:38:22 -0500
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-28 11:34:18 -0500
commit604bb98b6eb10cb17f5aa751557d3fafdb894d0e (patch)
tree81758222fcd1fdffa923a3fc166b6e1e9b800948
parenta5bc13981cecd0dee09e0ff1f0396c7ef10e3f23 (diff)
downloadtelepathy-logger-604bb98b6eb10cb17f5aa751557d3fafdb894d0e.tar.gz
Fix _xml_get_filtered_events() to return num_events
This method would return more the num events, and the the multi-backend code was fixing it auto-magically.
-rw-r--r--telepathy-logger/log-store-xml.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c
index f2ba8b3..99e7f77 100644
--- a/telepathy-logger/log-store-xml.c
+++ b/telepathy-logger/log-store-xml.c
@@ -1299,27 +1299,25 @@ log_store_xml_get_filtered_events (TplLogStore *store,
for (l = g_list_last (dates); l != NULL && i < num_events;
l = g_list_previous (l))
{
- GList *new_events, *n, *next;
+ GList *new_events, *n;
/* FIXME: We should really restrict the event parsing to get only
* the newest num_events. */
new_events = log_store_xml_get_events_for_date (store, account,
target, type_mask, l->data);
- n = new_events;
- while (n != NULL)
+ n = g_list_last (new_events);
+ while (n != NULL && i < num_events)
{
- next = g_list_next (n);
- if (filter != NULL && !filter (n->data, user_data))
+ if (filter == NULL || filter (n->data, user_data))
{
- g_object_unref (n->data);
- new_events = g_list_delete_link (new_events, n);
+ events = g_list_prepend (events, g_object_ref (n->data));
+ i++;
}
- else
- i++;
- n = next;
+ n = g_list_previous (n);
}
- events = g_list_concat (events, new_events);
+ g_list_foreach (new_events, (GFunc) g_object_unref, NULL);
+ g_list_free (new_events);
}
g_list_foreach (dates, (GFunc) g_date_free, NULL);