evolution-data-server r9095 - in branches/camel-db-summary/camel: . providers/imap providers/local
- From: sragavan svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9095 - in branches/camel-db-summary/camel: . providers/imap providers/local
- Date: Fri, 4 Jul 2008 10:39:32 +0000 (UTC)
Author: sragavan
Date: Fri Jul 4 10:39:32 2008
New Revision: 9095
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9095&view=rev
Log:
Fix imap/mbox crashers.
Modified:
branches/camel-db-summary/camel/camel-folder-search.c
branches/camel-db-summary/camel/camel-folder-thread.c
branches/camel-db-summary/camel/camel-folder.c
branches/camel-db-summary/camel/camel-string-utils.c
branches/camel-db-summary/camel/camel-vtrash-folder.c
branches/camel-db-summary/camel/providers/imap/camel-imap-folder.c
branches/camel-db-summary/camel/providers/imap/camel-imap-message-cache.c
branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c
branches/camel-db-summary/camel/providers/local/camel-local-summary.c
branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c
Modified: branches/camel-db-summary/camel/camel-folder-search.c
==============================================================================
--- branches/camel-db-summary/camel/camel-folder-search.c (original)
+++ branches/camel-db-summary/camel/camel-folder-search.c Fri Jul 4 10:39:32 2008
@@ -51,6 +51,7 @@
#include "camel-db.h"
#include "camel-store.h"
#include "camel-vee-folder.h"
+#include "camel-string-utils.h"
#define d(x)
#define r(x)
@@ -402,14 +403,16 @@
for (i=0;i<search->summary->len;i++) {
char *uid = g_ptr_array_index(search->summary, i);
if (g_hash_table_lookup(results, uid)) {
- g_ptr_array_add(matches, e_mempool_strdup(pool, uid));
+// g_ptr_array_add(matches, e_mempool_strdup(pool, uid));
+ g_ptr_array_add(matches, camel_pstring_strdup(uid));
}
}
g_hash_table_destroy(results);
} else {
for (i=0;i<r->value.ptrarray->len;i++) {
d(printf("adding match: %s\n", (char *)g_ptr_array_index(r->value.ptrarray, i)));
- g_ptr_array_add(matches, e_mempool_strdup(pool, g_ptr_array_index(r->value.ptrarray, i)));
+// g_ptr_array_add(matches, e_mempool_strdup(pool, g_ptr_array_index(r->value.ptrarray, i)));
+ g_ptr_array_add(matches, camel_pstring_strdup(g_ptr_array_index(r->value.ptrarray, i)));
}
}
/* instead of putting the mempool_hash in the structure, we keep the api clean by
@@ -532,7 +535,7 @@
int i;
struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
EMemPool *pool;
-
+#if 0
pool = g_hash_table_lookup(p->mempool_hash, result);
if (pool) {
e_mempool_destroy(pool);
@@ -541,6 +544,8 @@
for (i=0;i<result->len;i++)
g_free(g_ptr_array_index(result, i));
}
+#endif
+ g_ptr_array_foreach (result, camel_pstring_free, NULL);
g_ptr_array_free(result, TRUE);
}
@@ -1495,7 +1500,7 @@
g_ptr_array_add (matches, g_strdup (cols [i]));
}
#else
- g_ptr_array_add (matches, g_strdup (cols [0]));
+ g_ptr_array_add (matches, camel_pstring_strdup (cols [0]));
#endif
return 0;
}
Modified: branches/camel-db-summary/camel/camel-folder-thread.c
==============================================================================
--- branches/camel-db-summary/camel/camel-folder-thread.c (original)
+++ branches/camel-db-summary/camel/camel-folder-thread.c Fri Jul 4 10:39:32 2008
@@ -618,7 +618,7 @@
g_hash_table_insert(wanted, uids->pdata[i], uids->pdata[i]);
}
- fsummary = camel_folder_get_summary(folder);
+ fsummary = camel_folder_summary_array (folder->summary);
thread->summary = summary = g_ptr_array_new();
if (fsummary->len - camel_folder_summary_cache_size (folder->summary) > 50)
camel_folder_summary_reload_from_db (folder->summary);
Modified: branches/camel-db-summary/camel/camel-folder.c
==============================================================================
--- branches/camel-db-summary/camel/camel-folder.c (original)
+++ branches/camel-db-summary/camel/camel-folder.c Fri Jul 4 10:39:32 2008
@@ -1291,8 +1291,6 @@
static void
free_summary(CamelFolder *folder, GPtrArray *summary)
{
- g_assert(folder->summary != NULL);
-
g_ptr_array_foreach (summary, camel_pstring_free, NULL);
g_ptr_array_free (summary, TRUE);
}
@@ -1308,8 +1306,6 @@
void
camel_folder_free_summary(CamelFolder *folder, GPtrArray *array)
{
- g_return_if_fail(CAMEL_IS_FOLDER(folder));
-
CF_CLASS(folder)->free_summary(folder, array);
}
Modified: branches/camel-db-summary/camel/camel-string-utils.c
==============================================================================
--- branches/camel-db-summary/camel/camel-string-utils.c (original)
+++ branches/camel-db-summary/camel/camel-string-utils.c Fri Jul 4 10:39:32 2008
@@ -240,11 +240,14 @@
if (count == 0) {
g_hash_table_remove(pstring_table, p);
g_free(p);
+ if (p != s) /* Only for debugging purposes */
+ g_assert(0);
} else {
g_hash_table_insert(pstring_table, p, GINT_TO_POINTER(count));
}
} else {
g_warning("Trying to free string not allocated from the pool '%s'", s);
+ /*Only for debugging purposes */
g_assert (0);
}
pthread_mutex_unlock(&pstring_lock);
Modified: branches/camel-db-summary/camel/camel-vtrash-folder.c
==============================================================================
--- branches/camel-db-summary/camel/camel-vtrash-folder.c (original)
+++ branches/camel-db-summary/camel/camel-vtrash-folder.c Fri Jul 4 10:39:32 2008
@@ -332,7 +332,8 @@
vuid = g_malloc(strlen(uid)+9);
memcpy(vuid, hash, 8);
strcpy(vuid+8, uid);
- g_ptr_array_add(result, vuid);
+ g_ptr_array_add(result, camel_pstring_strdup(vuid));
+ g_free (vuid);
}
camel_folder_search_free(f, matches);
}
@@ -394,7 +395,8 @@
vuid = g_malloc(strlen(uid)+9);
memcpy(vuid, hash, 8);
strcpy(vuid+8, uid);
- g_ptr_array_add(result, vuid);
+ g_ptr_array_add(result, camel_pstring_strdup(vuid));
+ g_free (vuid);
}
camel_folder_search_free(f, matches);
}
Modified: branches/camel-db-summary/camel/providers/imap/camel-imap-folder.c
==============================================================================
--- branches/camel-db-summary/camel/providers/imap/camel-imap-folder.c (original)
+++ branches/camel-db-summary/camel/providers/imap/camel-imap-folder.c Fri Jul 4 10:39:32 2008
@@ -883,6 +883,11 @@
g_datalist_clear (&data);
}
+ if (summary_got == 0) {
+ CAMEL_SERVICE_REC_UNLOCK (store, connect_lock);
+ g_free(new);
+ return;
+ }
camel_operation_end (NULL);
if (type == CAMEL_IMAP_RESPONSE_ERROR || camel_application_is_exiting) {
for (i = 0; i < summary_len && new[i].uid; i++) {
@@ -922,13 +927,13 @@
info = camel_folder_summary_uid (folder->summary, uid);
iinfo = (CamelImapMessageInfo *)info;
-
if (strcmp (uid, new[i].uid) != 0) {
g_free (uid);
seq = i + 1;
g_array_append_val (removed, seq);
i--;
summary_len--;
+ camel_message_info_free(info);
continue;
}
@@ -1185,7 +1190,6 @@
continue;
if (!(info = (CamelImapMessageInfo *) camel_folder_summary_uid (folder->summary, uid))) {
- g_free (uid);
continue;
}
Modified: branches/camel-db-summary/camel/providers/imap/camel-imap-message-cache.c
==============================================================================
--- branches/camel-db-summary/camel/providers/imap/camel-imap-message-cache.c (original)
+++ branches/camel-db-summary/camel/providers/imap/camel-imap-message-cache.c Fri Jul 4 10:39:32 2008
@@ -179,6 +179,7 @@
else
uid = g_strdup (dname);
+ #warning "this could be wrong"
if (summary->loaded_infos && g_hash_table_lookup (summary->loaded_infos, uid))
cache_put (cache, uid, dname, NULL);
Modified: branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c (original)
+++ branches/camel-db-summary/camel/providers/imap/camel-imap-summary.c Fri Jul 4 10:39:32 2008
@@ -163,6 +163,8 @@
if it cannot be loaded, for some random reason.
We need to pass the ex and find out why it is not loaded etc. ? */
camel_folder_summary_clear_db (summary);
+ g_warning ("Unable to load summary %s\n", camel_exception_get_description (&ex));
+ camel_exception_clear (&ex);
}
g_ptr_array_sort (summary->uids, (GCompareFunc) uid_compare);
@@ -421,7 +423,7 @@
CamelImapMessageInfo *mi;
mi = camel_message_info_clone(info);
- mi->info.uid = g_strdup(uid);
+ mi->info.uid = camel_pstring_strdup(uid);
camel_folder_summary_add (summary, (CamelMessageInfo *)mi);
}
Modified: branches/camel-db-summary/camel/providers/local/camel-local-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/local/camel-local-summary.c (original)
+++ branches/camel-db-summary/camel/providers/local/camel-local-summary.c Fri Jul 4 10:39:32 2008
@@ -585,7 +585,7 @@
camel_header_param_list_free(params);
}
- mi->info.uid = g_strdup(uidstr);
+ mi->info.uid = camel_pstring_strdup(uidstr);
mi->info.flags = flags;
return 0;
@@ -669,8 +669,8 @@
if (xev==NULL || camel_local_summary_decode_x_evolution(cls, xev, mi) == -1) {
/* to indicate it has no xev header */
mi->info.flags |= CAMEL_MESSAGE_FOLDER_FLAGGED | CAMEL_MESSAGE_FOLDER_NOXEV;
- g_free (mi->info.uid);
- mi->info.uid = camel_folder_summary_next_uid_string(s);
+ camel_pstring_free (mi->info.uid);
+ mi->info.uid = camel_pstring_add (camel_folder_summary_next_uid_string(s), TRUE);
/* shortcut, no need to look it up in the index library */
doindex = TRUE;
Modified: branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c
==============================================================================
--- branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c (original)
+++ branches/camel-db-summary/camel/providers/local/camel-mbox-summary.c Fri Jul 4 10:39:32 2008
@@ -376,8 +376,8 @@
if (add&1) {
mi->info.info.flags |= CAMEL_MESSAGE_FOLDER_FLAGGED | CAMEL_MESSAGE_FOLDER_NOXEV;
- g_free (mi->info.info.uid);
- mi->info.info.uid = camel_folder_summary_next_uid_string(s);
+ camel_pstring_free (mi->info.info.uid);
+ mi->info.info.uid = camel_pstring_add(camel_folder_summary_next_uid_string(s), TRUE);
} else {
camel_folder_summary_set_uid(s, strtoul(camel_message_info_uid(mi), NULL, 10));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]