X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/771706ac9fed2b902bd4d3ddccb15ee27b0f58ae..c36ae8a76cf2ab8065fa996bb182e286880d63c0:/uip/mhlsbr.c diff --git a/uip/mhlsbr.c b/uip/mhlsbr.c index 9dbc98cb..9a35a816 100644 --- a/uip/mhlsbr.c +++ b/uip/mhlsbr.c @@ -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;