]> granicus.if.org Git - neomutt/commitdiff
Fix memory leak when closing mailbox and using the sidebar.
authorKevin McCarthy <kevin@8t8.us>
Tue, 23 May 2017 22:53:30 +0000 (15:53 -0700)
committerKevin McCarthy <kevin@8t8.us>
Tue, 23 May 2017 22:53:30 +0000 (15:53 -0700)
The code updating the sidebar counts decremented the msgcount, but did
not set it back to the original value.  Which means fastclose was not
freeing all the headers.

Update the sidebar only when something is deleted, since I don't
believe it's required otherwise and the code is a bit cleaner that
way.

mx.c

diff --git a/mx.c b/mx.c
index e8fae7e7d15869120ec4fd46c647945581d94854..9a8396f5aea6dc4ea3902b0f8eb80a474709171e 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -994,6 +994,8 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
 #ifdef USE_SIDEBAR
   if (purge && ctx->deleted)
   {
+    int orig_msgcount = ctx->msgcount;
+
     for (i = 0; i < ctx->msgcount; i++)
     {
       if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->read)
@@ -1002,8 +1004,9 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
         ctx->flagged--;
     }
     ctx->msgcount -= ctx->deleted;
+    mutt_sb_set_buffystats (ctx);
+    ctx->msgcount = orig_msgcount;
   }
-  mutt_sb_set_buffystats (ctx);
 #endif
 
   mx_fastclose_mailbox (ctx);