g_return_if_fail(msginfo != NULL);
oldmsginfo = g_hash_table_lookup(cache->msgnum_table, &msginfo->msgnum);
- if(msginfo) {
+ if(oldmsginfo && oldmsginfo->msgid) {
g_hash_table_remove(cache->msgid_table, oldmsginfo->msgid);
g_hash_table_remove(cache->msgnum_table, &oldmsginfo->msgnum);
+ }
+ if (oldmsginfo)
procmsg_msginfo_free(oldmsginfo);
- }
+
cache->memusage -= procmsg_msginfo_memusage(oldmsginfo);
newmsginfo = procmsg_msginfo_new_ref(msginfo);
READ_CACHE_DATA(msginfo->inreplyto, fp);
READ_CACHE_DATA(msginfo->references, fp);
READ_CACHE_DATA(msginfo->xref, fp);
+ READ_CACHE_DATA_INT(msginfo->planned_download, fp);
msginfo->folder = item;
msginfo->flags.tmp_flags |= tmp_flags;
WRITE_CACHE_DATA(msginfo->inreplyto, fp);
WRITE_CACHE_DATA(msginfo->references, fp);
WRITE_CACHE_DATA(msginfo->xref, fp);
+ WRITE_CACHE_DATA_INT(msginfo->planned_download, fp);
}
static void msgcache_write_flags(MsgInfo *msginfo, FILE *fp)