if (imap->changes == NULL)
imap->changes = camel_folder_change_info_new();
- camel_folder_change_info_change_uid(imap->changes, camel_message_info_uid(mi));
+ camel_folder_change_info_change_uid(imap->changes, uid);
g_free (uid);
}
camel_folder_change_info_clear (imap->changes);
}
+ if (mi)
+ camel_message_info_free (mi);
camel_object_unref (folder);
}
}
if (!camel_exception_is_set (ic->ex) && ic->status->result == IMAPX_OK) {
GCompareDataFunc uid_cmp = imapx_uid_cmp;
- const CamelMessageInfo *s_minfo = NULL;
+ CamelMessageInfo *s_minfo = NULL;
CamelIMAPXMessageInfo *info;
CamelFolderSummary *s = job->folder->summary;
GSList *removed = NULL, *l;
const gchar *uid = camel_message_info_uid (s_minfo);
camel_folder_change_info_remove_uid (job->u.refresh_info.changes, uid);
- removed = g_slist_prepend (removed, (gpointer )uid);
+ removed = g_slist_prepend (removed, (gpointer ) g_strdup (uid));
j = imapx_index_next (s, j);
+ camel_message_info_free (s_minfo);
s_minfo = camel_folder_summary_index (s, j);
}
} else
fetch_new = TRUE;
+ if (s_minfo)
+ camel_message_info_free (s_minfo);
+
j = imapx_index_next (s, j);
s_minfo = camel_folder_summary_index (s, j);
break;
}
+ if (s_minfo)
+ camel_message_info_free (s_minfo);
+
while (j < total) {
s_minfo = camel_folder_summary_index (s, j);
}
printf("Message %s vanished\n", s_minfo->uid);
- removed = g_slist_prepend (removed, (gpointer) s_minfo->uid);
+ removed = g_slist_prepend (removed, (gpointer) g_strdup (s_minfo->uid));
+ camel_message_info_free (s_minfo);
j++;
}
camel_folder_summary_remove_uid_fast (s, uid);
}
- camel_db_delete_uids (is->store->cdb_w, s->folder->full_name, removed, NULL);
+ if (removed) {
+ camel_db_delete_uids (is->store->cdb_w, s->folder->full_name, removed, NULL);
+ g_slist_foreach (removed, (GFunc) g_free, NULL);
+ g_slist_free (removed);
+ }
+
imapx_update_store_summary (job->folder);
if (camel_folder_change_info_changed(job->u.refresh_info.changes))
info->info.dirty = TRUE;
camel_folder_summary_touch (job->folder->summary);
+ camel_message_info_free (info);
/* FIXME: move over user flags too */
}
imapx_command_queue(is, ic);
ic = NULL;
}
+ camel_message_info_free (info);
}
}
if (user_set == NULL)
return;
- for (i=0;i<user_set->len;i++)
- g_ptr_array_free(g_array_index(user_set, struct _imapx_flag_change, i).infos, TRUE);
+ for (i=0;i<user_set->len;i++) {
+ GPtrArray *infos = g_array_index (user_set, struct _imapx_flag_change, i).infos;
+ gint j;
+
+ for (j = 0; j < infos->len; j++) {
+ CamelMessageInfo *info = g_ptr_array_index (infos, j);
+ camel_message_info_free (info);
+ }
+
+ g_ptr_array_free(infos, TRUE);
+ }
g_array_free(user_set, TRUE);
}
info = (CamelIMAPXMessageInfo *) camel_folder_summary_peek_info (folder->summary, uids->pdata[i]);
- if (!(info->info.flags & CAMEL_MESSAGE_FOLDER_FLAGGED))
+ if (!(info->info.flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) {
+ camel_message_info_free (info);
continue;
+ }
flags = ((CamelMessageInfoBase *)info)->flags & CAMEL_IMAPX_SERVER_FLAGS;
sflags = info->server_flags & CAMEL_IMAPX_SERVER_FLAGS;
g_array_append_val(user_set, add);
change = &add;
found:
+ camel_message_info_ref (info);
g_ptr_array_add(change->infos, info);
}
}
+ camel_message_info_free (info);
}
if ((on_orset|off_orset) == 0 && on_user == NULL && off_user == NULL)