+2007-06-03 Srinivasa Ragavan <sragavan@novell.com>
+
+ ** Memory leak fixes from bug #440524
+
+ * backends/file/e-book-backend-file.c: (book_view_thread):
+ * backends/groupwise/e-book-backend-groupwise.c: (update_cache),
+ (update_address_book_deltas),
+ (e_book_backend_groupwise_authenticate_user),
+ (e_book_backend_groupwise_load_source):
+ * libedata-book/e-book-backend-db-cache.c:
+ (e_book_backend_db_cache_get_contact),
+ (e_book_backend_db_cache_get_contacts),
+ (e_book_backend_db_cache_exists):
+ * libedata-book/e-book-backend-summary.c:
+ (e_book_backend_summary_load):
+
2007-05-31 Matthew Barnes <mbarnes@redhat.com>
* libebook/Makefile.am:
if (db_error == 0) {
e_data_book_view_notify_update_prefiltered_vcard (book_view, id, vcard_dbt.data);
+ g_free (vcard_dbt.data);
}
else {
g_warning (G_STRLOC ": db->get failed with %s", db_strerror (db_error));
e_data_book_view_notify_update_prefiltered_vcard (book_view, id_dbt.data, vcard_dbt.data);
else
e_data_book_view_notify_update_vcard (book_view, vcard_dbt.data);
+ g_free (vcard_dbt.data);
} else {
g_free (vcard_dbt.data);
}
cache_file_name = e_book_backend_db_cache_get_filename(ebgw->priv->file_db);
g_stat (cache_file_name, &buf);
+ g_free (cache_file_name);
mod_time = buf.st_mtime;
tm = gmtime (&mod_time);
strftime (cache_time_string, 100, "%Y-%m-%dT%H:%M:%SZ", tm);
GTimeVal start, end;
unsigned long diff;
- const char *cache_file_name;
+ char *cache_file_name;
struct stat buf;
time_t mod_time;
/* load summary file */
cache_file_name = e_book_backend_db_cache_get_filename(ebgw->priv->file_db);
g_stat (cache_file_name, &buf);
+ g_free (cache_file_name);
mod_time = buf.st_mtime;
if (e_book_backend_summary_load (ebgw->priv->summary) == FALSE ||
e_book_backend_summary_is_up_to_date (ebgw->priv->summary, mod_time) == FALSE) {
add_sequence_to_cache (priv->file_db, server_first_sequence,
server_last_sequence, server_last_po_rebuild_time);
g_mutex_unlock (priv->update_mutex);
+ g_free (sequence);
+ g_free (count);
return TRUE;
}
sync_required = TRUE;
{
EBookBackendGroupwise *ebgw;
EBookBackendGroupwisePrivate *priv;
- char *id;
+ char *id, *tmpfile;
int status;
char *http_uri;
gboolean is_writable;
}
/* initialize summary file */
- g_mkdir_with_parents (g_path_get_dirname (priv->summary_file_name), 0700);
+ tmpfile = g_path_get_dirname (priv->summary_file_name);
+ g_mkdir_with_parents (tmpfile, 0700);
+ g_free (tmpfile);
priv->summary = e_book_backend_summary_new (priv->summary_file_name,
SUMMARY_FLUSH_TIMEOUT);
{
EBookBackendGroupwise *ebgw;
EBookBackendGroupwisePrivate *priv;
- char *dirname, *filename;
+ char *dirname, *filename, *tmp;
char *book_name;
char *uri;
char **tokens;
}
g_free (priv->summary_file_name);
- priv->summary_file_name = g_build_filename (g_get_home_dir(), ".evolution/addressbook" , uri, priv->book_name, NULL);
- priv->summary_file_name = g_strconcat (ebgw->priv->summary_file_name, ".summary", NULL);
+ tmp = g_build_filename (g_get_home_dir(), ".evolution/addressbook" , uri, priv->book_name, NULL);
+ priv->summary_file_name = g_strconcat (tmp, ".summary", NULL);
+ g_free (tmp);
dirname = g_build_filename (g_get_home_dir(), ".evolution/cache/addressbook", uri, priv->book_name, NULL);
filename = g_build_filename (dirname, "cache.db", NULL);
{
DBT uid_dbt, vcard_dbt;
int db_error;
- const char *vcard_str;
+ EContact *contact = NULL;
g_return_val_if_fail (uid != NULL, NULL);
return NULL;
}
- vcard_str = g_strdup (vcard_dbt.data);
+ contact = e_contact_new_from_vcard ((const char *)vcard_dbt.data);
g_free (vcard_dbt.data);
-
- return e_contact_new_from_vcard (vcard_str);
+ return contact;
}
/**
db_error = dbc->c_get(dbc, &uid_dbt, &vcard_dbt, DB_FIRST);
while(db_error == 0) {
- if (vcard_dbt.data && !strncmp (vcard_dbt.data, "BEGIN:VCARD", 11))
- if (e_book_backend_sexp_match_vcard(sexp, vcard_dbt.data)) {
+ if (vcard_dbt.data && !strncmp (vcard_dbt.data, "BEGIN:VCARD", 11)) {
contact = e_contact_new_from_vcard (vcard_dbt.data);
- list = g_list_append (list, contact);
+
+ if (e_book_backend_sexp_match_contact(sexp, contact))
+ list = g_list_prepend (list, contact);
+ else
+ g_object_unref (contact);
}
db_error = dbc->c_get (dbc, &uid_dbt, &vcard_dbt, DB_NEXT);
}
if (sexp)
g_object_unref (sexp);
- return list;
+ return g_list_reverse (list);
}
/**
gboolean exists = FALSE;
file_name = get_filename_from_uri (uri);
- if (file_name && g_file_test (file_name, G_FILE_TEST_EXISTS)) {
+ if (file_name && g_file_test (file_name, G_FILE_TEST_EXISTS))
exists = TRUE;
- g_free (file_name);
- }
-
+
+ g_free (file_name);
+
return exists;
}
EBookBackendSummaryItem *new_item;
int i;
+ clear_items (summary);
+
if (!e_book_backend_summary_open (summary))
return FALSE;