Fix a memory leak in rssyl_add_item()
[claws.git] / src / plugins / rssyl / rssyl_add_item.c
index 412300809f191a0bf023f3ce742bc81d525cb966..2bff2706ae016c010302f0a1d74ebfe6f9de2ae1 100644 (file)
@@ -379,6 +379,7 @@ void rssyl_add_item(RFolderItem *ritem, FeedItem *feed_item)
                                                atoi(pathbasename));
                g_free(pathbasename);
                oldperm_flags = msginfo->flags.perm_flags;
+               procmsg_msginfo_free(&msginfo);
 
                ritem->items = g_slist_remove(ritem->items, old_item);
                if (g_unlink(ctx->path) != 0) {
@@ -575,9 +576,11 @@ void rssyl_add_item(RFolderItem *ritem, FeedItem *feed_item)
         * doesn't want to see it unread because of the change. */
        if (dif != EXISTS_NEW) {
                if (!(oldperm_flags & MSG_UNREAD) && (ritem->silent_update == 2
-                               || (ritem->silent_update == 1 && dif == EXISTS_CHANGED_TEXTONLY)))
-                       procmsg_msginfo_unset_flags(
-                                       folder_item_get_msginfo((FolderItem *)ritem, d), MSG_NEW | MSG_UNREAD, 0);
+                               || (ritem->silent_update == 1 && dif == EXISTS_CHANGED_TEXTONLY))) {
+                       msginfo = folder_item_get_msginfo((FolderItem *)ritem, d);
+                       procmsg_msginfo_unset_flags(msginfo, MSG_NEW | MSG_UNREAD, 0);
+                       procmsg_msginfo_free(&msginfo);
+               }
        }
 
        debug_print("RSSyl: folder_item_add_msg(): %d\n", d);