]> granicus.if.org Git - neomutt/commitdiff
Convert attach_forward_bodies to use buffer pool
authorKevin McCarthy <kevin@8t8.us>
Wed, 23 Oct 2019 07:04:49 +0000 (15:04 +0800)
committerRichard Russon <rich@flatcap.org>
Sat, 26 Oct 2019 22:55:44 +0000 (23:55 +0100)
Upstream-commit: https://gitlab.com/muttmua/mutt/commit/0b59dc759c3d9d59fd9423500cf775a76622b634
Co-authored-by: Richard Russon <rich@flatcap.org>
recvcmd.c

index 87e5e6648f39fb21b0bccee0882052dde9e13657..ff08fdd39f386da25bc813c82cf84019551e1c60 100644 (file)
--- a/recvcmd.c
+++ b/recvcmd.c
@@ -463,9 +463,9 @@ static void attach_forward_bodies(FILE *fp, struct Email *e, struct AttachCtx *a
   bool mime_fwd_any = true;
   struct Email *e_parent = NULL;
   FILE *fp_parent = NULL;
-  char tmpbody[PATH_MAX];
   char prefix[256];
   enum QuadOption ans = MUTT_ABORT;
+  struct Buffer *tmpbody = NULL;
 
   /* First, find the parent message.
    * Note: This could be made an option by just
@@ -486,13 +486,14 @@ static void attach_forward_bodies(FILE *fp, struct Email *e, struct AttachCtx *a
   e_tmp->env = mutt_env_new();
   mutt_make_forward_subject(e_tmp->env, Context->mailbox, e_parent);
 
-  mutt_mktemp(tmpbody, sizeof(tmpbody));
-  FILE *fp_tmp = mutt_file_fopen(tmpbody, "w");
+  tmpbody = mutt_buffer_pool_get();
+  mutt_buffer_mktemp(tmpbody);
+  FILE *fp_tmp = mutt_file_fopen(mutt_b2s(tmpbody), "w");
   if (!fp_tmp)
   {
-    mutt_error(_("Can't open temporary file %s"), tmpbody);
+    mutt_error(_("Can't open temporary file %s"), mutt_b2s(tmpbody));
     email_free(&e_tmp);
-    return;
+    goto bail;
   }
 
   mutt_forward_intro(Context->mailbox, e_parent, fp_tmp);
@@ -598,17 +599,18 @@ static void attach_forward_bodies(FILE *fp, struct Email *e, struct AttachCtx *a
   /* now that we have the template, send it. */
   struct EmailList el = STAILQ_HEAD_INITIALIZER(el);
   el_add_email(&el, e_parent);
-  ci_send_message(SEND_NO_FLAGS, e_tmp, tmpbody, NULL, &el);
+  ci_send_message(SEND_NO_FLAGS, e_tmp, mutt_b2s(tmpbody), NULL, &el);
   emaillist_clear(&el);
+  mutt_buffer_pool_release(&tmpbody);
   return;
 
 bail:
-
   if (fp_tmp)
   {
     mutt_file_fclose(&fp_tmp);
-    mutt_file_unlink(tmpbody);
+    mutt_file_unlink(mutt_b2s(tmpbody));
   }
+  mutt_buffer_pool_release(&tmpbody);
 
   email_free(&e_tmp);
 }