evolution-data-server r9171 - in trunk/camel: . providers/imap providers/local
- From: mcrha svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9171 - in trunk/camel: . providers/imap providers/local
- Date: Wed, 23 Jul 2008 14:50:53 +0000 (UTC)
Author: mcrha
Date: Wed Jul 23 14:50:53 2008
New Revision: 9171
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9171&view=rev
Log:
2008-07-23 Milan Crha <mcrha redhat com>
** Fix for bug #543943
* camel/camel-store.c: (construct):
* camel/camel-folder.c: (camel_folder_construct):
* camel/camel-vee-folder.c: (summary_header_to_db):
* camel/camel.c: (camel_init):
* camel/camel-db.c: (cdb_sql_exec), (camel_db_count_message_info),
(camel_db_select):
* camel/camel-folder-summary.c: (camel_folder_summary_migrate_infos),
(message_info_from_uid), (camel_folder_summary_save_to_db),
(camel_folder_summary_header_load_from_db),
(camel_folder_summary_remove_range), (summary_header_to_db):
* camel/providers/imap/camel-imap-store.c: (camel_imap_store_finalize):
* camel/providers/imap/camel-imap-summary.c: (message_info_from_db): Leak fix.
* camel/providers/local/camel-local-summary.c: (summary_header_from_db):
Reassign structure member correctly, otherwise can cause a crash.
* camel/providers/local/camel-maildir-store.c: (scan_dirs): Leak fix.
Modified:
trunk/camel/ChangeLog
trunk/camel/camel-db.c
trunk/camel/camel-folder-summary.c
trunk/camel/camel-folder.c
trunk/camel/camel-store.c
trunk/camel/camel-vee-folder.c
trunk/camel/camel.c
trunk/camel/providers/imap/ChangeLog
trunk/camel/providers/imap/camel-imap-store.c
trunk/camel/providers/imap/camel-imap-summary.c
trunk/camel/providers/local/ChangeLog
trunk/camel/providers/local/camel-local-summary.c
trunk/camel/providers/local/camel-maildir-store.c
Modified: trunk/camel/camel-db.c
==============================================================================
--- trunk/camel/camel-db.c (original)
+++ trunk/camel/camel-db.c Wed Jul 23 14:50:53 2008
@@ -42,7 +42,7 @@
static int
cdb_sql_exec (sqlite3 *db, const char* stmt, CamelException *ex)
{
- char *errmsg;
+ char *errmsg = NULL;
int ret = -1;
d(g_print("Camel SQL Exec:\n%s\n", stmt));
@@ -50,16 +50,27 @@
ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
while (ret == SQLITE_BUSY || ret == SQLITE_LOCKED || ret == -1) {
- ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+ ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
}
if (ret != SQLITE_OK) {
- d(g_print ("Error in SQL EXEC statement: %s [%s].\n", stmt, errmsg));
- if (ex)
+ d(g_print ("Error in SQL EXEC statement: %s [%s].\n", stmt, errmsg));
+ if (ex)
camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _(errmsg));
sqlite3_free (errmsg);
+ errmsg = NULL;
return -1;
}
+
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+
return 0;
}
@@ -244,20 +255,32 @@
camel_db_count_message_info (CamelDB *cdb, const char *query, guint32 *count, CamelException *ex)
{
int ret = -1;
- char *errmsg;
+ char *errmsg = NULL;
ret = sqlite3_exec(cdb->db, query, count_cb, count, &errmsg);
while (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+
ret = sqlite3_exec (cdb->db, query, count_cb, count, &errmsg);
}
CAMEL_DB_RELEASE_SQLITE_MEMORY;
if (ret != SQLITE_OK) {
- g_print ("Error in SQL SELECT statement: %s [%s]\n", query, errmsg);
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _(errmsg));
- sqlite3_free (errmsg);
+ g_print ("Error in SQL SELECT statement: %s [%s]\n", query, errmsg);
+ camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _(errmsg));
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
}
+
return ret;
}
@@ -385,7 +408,7 @@
int
camel_db_select (CamelDB *cdb, const char* stmt, CamelDBSelectCB callback, gpointer data, CamelException *ex)
{
- char *errmsg;
+ char *errmsg = NULL;
//int nrecs = 0;
int ret = -1;
@@ -396,6 +419,11 @@
ret = sqlite3_exec(cdb->db, stmt, callback, data, &errmsg);
while (ret == SQLITE_BUSY || ret == SQLITE_LOCKED) {
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+
ret = sqlite3_exec (cdb->db, stmt, callback, data, &errmsg);
}
@@ -405,8 +433,14 @@
d(g_warning ("Error in select statement '%s' [%s].\n", stmt, errmsg));
camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, errmsg);
sqlite3_free (errmsg);
+ errmsg = NULL;
}
+ if (errmsg) {
+ sqlite3_free (errmsg);
+ errmsg = NULL;
+ }
+
return ret;
}
Modified: trunk/camel/camel-folder-summary.c
==============================================================================
--- trunk/camel/camel-folder-summary.c (original)
+++ trunk/camel/camel-folder-summary.c Wed Jul 23 14:50:53 2008
@@ -510,11 +510,14 @@
info = g_hash_table_lookup (s->loaded_infos, uid);
if (!info) {
+ char *errmsg = g_strdup_printf ("no uid [%s] exists", uid);
+
/* Makes no sense now as the exception is local as of now. FIXME: Pass exception from caller */
- camel_exception_set (&ex, CAMEL_EXCEPTION_SYSTEM, _(g_strdup_printf ("no uid [%s] exists", uid)));
+ camel_exception_set (&ex, CAMEL_EXCEPTION_SYSTEM, _(errmsg));
// if (strcmp (folder_name, "UNMATCHED"))
g_warning ("No uid[%s] exists in %s\n", uid, folder_name);
camel_exception_clear (&ex);
+ g_free (errmsg);
}
} else
info->refcount++;
@@ -1107,6 +1110,8 @@
}
ret = camel_db_write_folder_info_record (cdb, record, &ex);
+
+ g_free (record->bdata);
g_free (record);
if (ret != 0) {
@@ -1251,6 +1256,7 @@
camel_db_begin_transaction (cdb, ex);
ret = camel_db_write_folder_info_record (cdb, record, ex);
+ g_free (record->bdata);
g_free (record);
if (ret != 0) {
@@ -1428,8 +1434,7 @@
}
g_free (record->folder_name);
- #warning "Crashes, take care"
- //g_free (record->bdata);
+ g_free (record->bdata);
g_free (record);
return ret;
@@ -2093,6 +2098,7 @@
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
+ camel_exception_clear (&ex);
} else {
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
}
@@ -2382,10 +2388,11 @@
{
CamelFIRecord * record = g_new0 (CamelFIRecord, 1);
CamelDB *db;
+ char *table_name;
db = s->folder->cdb;
- //char *table_name = safe_table (camel_file_util_safe_filename (s->folder->full_name));
- char *table_name = s->folder->full_name;
+ //table_name = safe_table (camel_file_util_safe_filename (s->folder->full_name));
+ table_name = s->folder->full_name;
io(printf("Savining header to db\n"));
Modified: trunk/camel/camel-folder.c
==============================================================================
--- trunk/camel/camel-folder.c (original)
+++ trunk/camel/camel-folder.c Wed Jul 23 14:50:53 2008
@@ -265,8 +265,11 @@
store_db_path = g_build_filename (service->url->path, CAMEL_DB_FILE, NULL);
camel_exception_init(&ex);
if (strlen (store_db_path) < 2) {
+ char *store_path = camel_session_get_storage_path ((CamelSession *)camel_service_get_session (service), service, &ex);
+
g_free (store_db_path);
- store_db_path = g_build_filename ( camel_session_get_storage_path ((CamelSession *)camel_service_get_session (service), service, &ex), CAMEL_DB_FILE, NULL);
+ store_db_path = g_build_filename (store_path, CAMEL_DB_FILE, NULL);
+ g_free (store_path);
}
Modified: trunk/camel/camel-store.c
==============================================================================
--- trunk/camel/camel-store.c (original)
+++ trunk/camel/camel-store.c Wed Jul 23 14:50:53 2008
@@ -215,8 +215,11 @@
store_db_path = g_build_filename (service->url->path, CAMEL_DB_FILE, NULL);
if (strlen (store_db_path) < 2) {
+ char *store_path = camel_session_get_storage_path (session, service, ex);
+
g_free (store_db_path);
- store_db_path = g_build_filename ( camel_session_get_storage_path (session, service, ex), CAMEL_DB_FILE, NULL);
+ store_db_path = g_build_filename (store_path, CAMEL_DB_FILE, NULL);
+ g_free (store_path);
}
store->cdb = camel_db_open (store_db_path, ex);
Modified: trunk/camel/camel-vee-folder.c
==============================================================================
--- trunk/camel/camel-vee-folder.c (original)
+++ trunk/camel/camel-vee-folder.c Wed Jul 23 14:50:53 2008
@@ -471,10 +471,10 @@
{
CamelFIRecord * record = g_new0 (CamelFIRecord, 1);
CamelDB *db;
+ char *table_name;
db = s->folder->parent_store->cdb;
- char *table_name = s->folder->full_name;
-
+ table_name = s->folder->full_name;
record->folder_name = table_name;
Modified: trunk/camel/camel.c
==============================================================================
--- trunk/camel/camel.c (original)
+++ trunk/camel/camel.c Wed Jul 23 14:50:53 2008
@@ -105,6 +105,7 @@
if (NSS_InitReadWrite (nss_configdir) == SECFailure) {
/* fall back on using volatile dbs? */
if (NSS_NoDB_Init (nss_configdir) == SECFailure) {
+ g_free (nss_configdir);
g_warning ("Failed to initialize NSS");
return -1;
}
@@ -121,6 +122,8 @@
SSL_OptionSetDefault (SSL_ENABLE_SSL3, PR_TRUE);
SSL_OptionSetDefault (SSL_ENABLE_TLS, PR_TRUE);
SSL_OptionSetDefault (SSL_V2_COMPATIBLE_HELLO, PR_TRUE /* maybe? */);
+
+ g_free (nss_configdir);
}
#endif /* HAVE_NSS */
Modified: trunk/camel/providers/imap/camel-imap-store.c
==============================================================================
--- trunk/camel/providers/imap/camel-imap-store.c (original)
+++ trunk/camel/providers/imap/camel-imap-store.c Wed Jul 23 14:50:53 2008
@@ -210,6 +210,9 @@
disco->diary = NULL;
}
+ g_free (imap_store->namespace);
+ imap_store->namespace = NULL;
+
g_free (imap_store->custom_headers);
}
Modified: trunk/camel/providers/imap/camel-imap-summary.c
==============================================================================
--- trunk/camel/providers/imap/camel-imap-summary.c (original)
+++ trunk/camel/providers/imap/camel-imap-summary.c Wed Jul 23 14:50:53 2008
@@ -272,9 +272,11 @@
info = camel_imap_summary_parent->message_info_from_db (s, mir);
if (info) {
- char *part = g_strdup (mir->bdata);
+ char *part = g_strdup (mir->bdata), *tmp;
+ tmp = part;
iinfo = (CamelImapMessageInfo *)info;
EXTRACT_FIRST_DIGIT (iinfo->server_flags)
+ g_free (tmp);
}
return info;
Modified: trunk/camel/providers/local/camel-local-summary.c
==============================================================================
--- trunk/camel/providers/local/camel-local-summary.c (original)
+++ trunk/camel/providers/local/camel-local-summary.c Wed Jul 23 14:50:53 2008
@@ -597,7 +597,7 @@
summary_header_from_db (CamelFolderSummary *s, CamelFIRecord *fir)
{
CamelLocalSummary *cls = (CamelLocalSummary *)s;
- char *part;
+ char *part, *tmp;
/* We dont actually add our own headers, but version that we don't anyway */
@@ -608,7 +608,11 @@
if (part) {
EXTRACT_FIRST_DIGIT (cls->version)
}
- fir->bdata = part;
+
+ /* keep only the rest of the bdata there (strip our version digit) */
+ tmp = g_strdup (part);
+ g_free (fir->bdata);
+ fir->bdata = tmp;
return 0;
}
Modified: trunk/camel/providers/local/camel-maildir-store.c
==============================================================================
--- trunk/camel/providers/local/camel-maildir-store.c (original)
+++ trunk/camel/providers/local/camel-maildir-store.c Wed Jul 23 14:50:53 2008
@@ -488,6 +488,7 @@
g_free(tmp);
}
closedir(dir);
+ g_free (name);
}
res = 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]