FILE *fp = NULL;
struct mcomp *c1;
struct stat st;
+ struct arglist *ap;
switch (setjmp (env)) {
case OK:
SIGNAL (SIGINT, intrser);
mhlfile (fp, cp, ofilen, ofilec); /* FALL THROUGH! */
+ for (ap = arglist_head; ap; ap = ap->a_next) {
+ fmt_free(ap->a_fmt, 0);
+ ap->a_fmt = NULL;
+ }
+
+ if (arglist_head)
+ fmt_free(NULL, 1);
+
default:
if (ontty != PITTY)
SIGNAL (SIGINT, SIG_IGN);
switch (state = m_getfld (state, name, buf, sizeof(buf), fp)) {
case FLD:
case FLDPLUS:
- bucket = fmt_addcomp(name, buf);
+ bucket = fmt_addcomptext(name, buf);
for (ip = ignores; *ip; ip++)
if (!mh_strcasecmp (name, *ip)) {
while (state == FLDPLUS) {
if (!(c1->c_flags & ADDRFMT)) {
if (c1->c_c_text)
- c1->c_c_text->c_text = getcpy (ap);
+ c1->c_c_text->c_text = ap;
if ((cp = strrchr(ap, '\n'))) /* drop ending newline */
if (!cp[1])
*cp = 0;
/* Don't need to append a newline, dctime() already did */
c2->c_text = getcpy (buffer);
- free (ap);
+ /* ap is now owned by the component struct, so do NOT free it here */
return;
}
SIGNAL_HANDLER istat = NULL, pstat = NULL, qstat = NULL;
char *cp = NULL;
struct mcomp *c1;
+ struct arglist *a, *a2;
switch (setjmp (mhlenv)) {
case OK:
free_queue (&msghd, &msgtl);
for (c1 = fmthd; c1; c1 = c1->c_next)
c1->c_flags &= ~HDROUTPUT;
+
+ a = arglist_head;
+ while (a) {
+ if (a->a_nfs)
+ free(a->a_nfs);
+ a2 = a->a_next;
+ free(a);
+ a = a2;
+ }
return exitstat;
}
}