MsgInfo *msginfo;
g_return_val_if_fail(item != NULL, NULL);
+ g_return_val_if_fail(msgid != NULL, NULL);
folder = item->folder;
if (!item->cache)
MsgInfo *newmsginfo;
if (folderscan) {
- newmsginfo = folder_item_get_msginfo_by_msgid(dest, msginfo->msgid);
- copy_msginfo_flags(msginfo, newmsginfo);
- num = newmsginfo->msgnum;
- procmsg_msginfo_free(newmsginfo);
+ if (msginfo->msgid != NULL) {
+ newmsginfo = folder_item_get_msginfo_by_msgid(dest, msginfo->msgid);
+ if (newmsginfo != NULL) {
+ copy_msginfo_flags(msginfo, newmsginfo);
+ num = newmsginfo->msgnum;
+ procmsg_msginfo_free(newmsginfo);
+ }
+ }
} else {
newmsginfo = folder->klass->get_msginfo(folder, dest, num);
- add_msginfo_to_cache(dest, newmsginfo, msginfo);
- procmsg_msginfo_free(newmsginfo);
+ if (newmsginfo != NULL) {
+ add_msginfo_to_cache(dest, newmsginfo, msginfo);
+ procmsg_msginfo_free(newmsginfo);
+ }
}
if (num > lastnum)
MsgInfo *msginfo;
g_return_val_if_fail(cache != NULL, NULL);
+ g_return_val_if_fail(msgid != NULL, NULL);
msginfo = g_hash_table_lookup(cache->msgid_table, msgid);
if(!msginfo)