libedata-book: Use slice allocator for EbSdbSearchData
authorMathias Hasselmann <mathias@openismus.com>
Tue, 11 Dec 2012 09:53:00 +0000 (10:53 +0100)
committerMathias Hasselmann <mathias@openismus.com>
Wed, 16 Jan 2013 14:25:54 +0000 (15:25 +0100)
EbSdbSearchData is a tiny object that gets allocated for each search result.
For such objects the slice allocator must be used to improve performance and
to reduce memory fragmentation.

addressbook/libedata-book/e-book-backend-sqlitedb.c

index cca1c6d..e23c278 100644 (file)
@@ -1951,7 +1951,7 @@ store_data_to_vcard (gpointer ref,
                      gchar **name)
 {
        GSList **vcard_data = ref;
-       EbSdbSearchData *search_data = g_new0 (EbSdbSearchData, 1);
+       EbSdbSearchData *search_data = g_slice_new0 (EbSdbSearchData);
        EContact *contact = e_contact_new ();
        gchar *vcard;
        gint i;
@@ -2739,7 +2739,7 @@ addto_vcard_list_cb (gpointer ref,
                      gchar **name)
 {
        GSList **vcard_data = ref;
-       EbSdbSearchData *s_data = g_new0 (EbSdbSearchData, 1);
+       EbSdbSearchData *s_data = g_slice_new0 (EbSdbSearchData);
 
        if (cols[0])
                s_data->uid = g_strdup (cols[0]);
@@ -3720,7 +3720,7 @@ e_book_backend_sqlitedb_search_data_free (EbSdbSearchData *s_data)
                g_free (s_data->uid);
                g_free (s_data->vcard);
                g_free (s_data->bdata);
-               g_free (s_data);
+               g_slice_free (EbSdbSearchData, s_data);
        }
 }