]> diplodocus.org Git - nmh/blobdiff - uip/mhlsbr.c
A better fix than e87f37c27828723317a71291e31b34f39ec09098, because
[nmh] / uip / mhlsbr.c
index 9dbc98cbed98a4f767a968cf7235216d45d1ac3b..9a35a816ff15ddf3056d0a39d7a5a794bc529b6f 100644 (file)
@@ -876,14 +876,17 @@ static void
 process (char *folder, char *fname, int ofilen, int ofilec)
 {
     /* static to prevent "might be clobbered" warning from gcc 4.9.2: */
-    static char *cp = NULL;
-    static FILE *fp = NULL;
+    static char *cp;
+    static FILE *fp;
     struct mcomp *c1;
     struct stat st;
     struct arglist *ap;
     /* volatile to prevent "might be clobbered" warning from gcc: */
     char *volatile fname2 = fname ? fname : "(stdin)";
 
+    cp = NULL;
+    fp = NULL;
+
     switch (setjmp (env)) {
        case OK: 
            if (fname) {
@@ -905,6 +908,7 @@ process (char *folder, char *fname, int ofilen, int ofilec)
            if (ontty != PITTY)
                SIGNAL (SIGINT, intrser);
            mhlfile (fp, cp, ofilen, ofilec);  /* FALL THROUGH! */
+            free (cp);
 
            for (ap = arglist_head; ap; ap = ap->a_next) {
                fmt_free(ap->a_fmt, 0);
@@ -919,7 +923,6 @@ process (char *folder, char *fname, int ofilen, int ofilec)
                SIGNAL (SIGINT, SIG_IGN);
            if (mhl_action == NULL && fp != stdin && fp != NULL)
                fclose (fp);
-               free (cp);
            if (holder.c_text) {
                free (holder.c_text);
                holder.c_text = NULL;