]> granicus.if.org Git - mutt/commitdiff
Convert buffy_mbox_check() and trash_append() to use local context.
authorKevin McCarthy <kevin@8t8.us>
Fri, 22 Jul 2016 21:55:01 +0000 (14:55 -0700)
committerKevin McCarthy <kevin@8t8.us>
Fri, 22 Jul 2016 21:55:01 +0000 (14:55 -0700)
buffy_mbox_check() was leaking the dynamically allocated context.
Rather than add a call to free, just convert it to use a local
variable.

Make the same change to trash_append(), which doesn't need the
dynamically allocated context either.

buffy.c
mx.c

diff --git a/buffy.c b/buffy.c
index 50bda350809d68aa90a186c1726c4fe85000c270..508136a5cb0f82297629b85f39547c48abefd842 100644 (file)
--- a/buffy.c
+++ b/buffy.c
@@ -417,7 +417,7 @@ static int buffy_mbox_check (BUFFY* mailbox, struct stat *sb, int check_stats)
 {
   int rc = 0;
   int new_or_changed;
-  CONTEXT *ctx = NULL;
+  CONTEXT ctx;
 
   if (option (OPTCHECKMBOXSIZE))
     new_or_changed = sb->st_size > mailbox->size;
@@ -446,15 +446,15 @@ static int buffy_mbox_check (BUFFY* mailbox, struct stat *sb, int check_stats)
   if (check_stats &&
       (mailbox->stats_last_checked < sb->st_mtime))
   {
-    if ((ctx = mx_open_mailbox (mailbox->path,
-                                MUTT_READONLY | MUTT_QUIET | MUTT_NOSORT | MUTT_PEEK,
-                                NULL)) != NULL)
+    if (mx_open_mailbox (mailbox->path,
+                         MUTT_READONLY | MUTT_QUIET | MUTT_NOSORT | MUTT_PEEK,
+                         &ctx) != NULL)
     {
-      mailbox->msg_count       = ctx->msgcount;
-      mailbox->msg_unread      = ctx->unread;
-      mailbox->msg_flagged     = ctx->flagged;
-      mailbox->stats_last_checked = ctx->mtime;
-      mx_close_mailbox (ctx, 0);
+      mailbox->msg_count       = ctx.msgcount;
+      mailbox->msg_unread      = ctx.unread;
+      mailbox->msg_flagged     = ctx.flagged;
+      mailbox->stats_last_checked = ctx.mtime;
+      mx_close_mailbox (&ctx, 0);
     }
   }
 
diff --git a/mx.c b/mx.c
index 86d02ced625ae050f717830e2682cfc06ef36343..7af22aaecd2cec9524abd041172922e6cfb67d84 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -800,7 +800,7 @@ static int sync_mailbox (CONTEXT *ctx, int *index_hint)
 /* move deleted mails to the trash folder */
 static int trash_append (CONTEXT *ctx)
 {
-  CONTEXT *ctx_trash;
+  CONTEXT ctx_trash;
   int i;
   struct stat st, stc;
   int opt_confappend, rc;
@@ -840,22 +840,20 @@ static int trash_append (CONTEXT *ctx)
   }
 #endif
 
-  if ((ctx_trash = mx_open_mailbox (TrashPath, MUTT_APPEND, NULL)) != NULL)
+  if (mx_open_mailbox (TrashPath, MUTT_APPEND, &ctx_trash) != NULL)
   {
     /* continue from initial scan above */
     for (; i < ctx->msgcount ; i++)
       if (ctx->hdrs[i]->deleted  && (!ctx->hdrs[i]->purge))
       {
-        if (mutt_append_message (ctx_trash, ctx, ctx->hdrs[i], 0, 0) == -1)
+        if (mutt_append_message (&ctx_trash, ctx, ctx->hdrs[i], 0, 0) == -1)
         {
-          mx_close_mailbox (ctx_trash, NULL);
-          FREE (&ctx_trash);
+          mx_close_mailbox (&ctx_trash, NULL);
           return -1;
         }
       }
 
-    mx_close_mailbox (ctx_trash, NULL);
-    FREE (&ctx_trash);
+    mx_close_mailbox (&ctx_trash, NULL);
   }
   else
   {