From 68b4d99fcb3d2ddf45cf0c004d3a0bac341f9616 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Wed, 29 Mar 2000 01:38:45 +0000 Subject: Fixed memory allocation. 2000-03-28 Christopher James Lahey * addressbook/backend/pas/pas-card-cursor.c: Fixed memory allocation. * addressbook/backend/pas/pas-backend-file.c: Fixed memory allocation. Made database stuff not do an extra entry. * addressbook/backend/ebook/test-client.c: Add test for get_all_cards functionality. Changed database name to test.db. * addressbook/backend/ebook/e-card-cursor.c: Changed bonobo_object to gtk_object in a couple of places. svn path=/trunk/; revision=2236 --- addressbook/backend/pas/pas-backend-file.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'addressbook/backend/pas/pas-backend-file.c') diff --git a/addressbook/backend/pas/pas-backend-file.c b/addressbook/backend/pas/pas-backend-file.c index e117fe8b05..73f4f67fc9 100644 --- a/addressbook/backend/pas/pas-backend-file.c +++ b/addressbook/backend/pas/pas-backend-file.c @@ -54,7 +54,7 @@ get_nth(PASCardCursor *cursor, long n, gpointer data) PASBackendFileCursorPrivate *cursor_data = (PASBackendFileCursorPrivate *) data; GList *nth_item = g_list_nth(cursor_data->elements, n); - return (char*)nth_item->data; + return g_strdup((char*)nth_item->data); } static void @@ -220,13 +220,14 @@ pas_backend_file_build_all_cards_list(PASBackend *backend, PASBackendFile *bf = PAS_BACKEND_FILE (backend); DB *db = bf->priv->file_db; int db_error; - - cursor_data->elements = NULL; - do { - DBT id_dbt, vcard_dbt; - char *id; + DBT id_dbt, vcard_dbt; + char *id; - db_error = db->seq(db, &id_dbt, &vcard_dbt, R_NEXT); + cursor_data->elements = NULL; + + db_error = db->seq(db, &id_dbt, &vcard_dbt, R_NEXT); + + while (db_error == 0) { id = g_strndup(id_dbt.data, id_dbt.size); @@ -237,11 +238,13 @@ pas_backend_file_build_all_cards_list(PASBackend *backend, } else { g_free(id); - g_list_append(cursor_data->elements, g_strndup(vcard_dbt.data, - vcard_dbt.size)); + cursor_data->elements = g_list_append(cursor_data->elements, g_strndup(vcard_dbt.data, + vcard_dbt.size)); } - } while (db_error == 0); + db_error = db->seq(db, &id_dbt, &vcard_dbt, R_NEXT); + + } if (db_error == -1) { g_warning ("pas_backend_file_build_all_cards_list: error building list\n"); -- cgit v1.2.3