]> diplodocus.org Git - nmh/commitdiff
Rearranged code to avoid "might be clobbered by longjmp" warnings from
authorDavid Levine <levinedl@acm.org>
Sun, 21 Dec 2014 16:31:41 +0000 (10:31 -0600)
committerDavid Levine <levinedl@acm.org>
Sun, 21 Dec 2014 16:31:41 +0000 (10:31 -0600)
gcc 4.9.2

uip/mhlsbr.c
uip/prompter.c

index 28d4894..9dbc98c 100644 (file)
@@ -875,8 +875,9 @@ parse (void)
 static void
 process (char *folder, char *fname, int ofilen, int ofilec)
 {
-    char *cp = NULL;
-    FILE *fp = NULL;
+    /* static to prevent "might be clobbered" warning from gcc 4.9.2: */
+    static char *cp = NULL;
+    static FILE *fp = NULL;
     struct mcomp *c1;
     struct stat st;
     struct arglist *ap;
@@ -913,12 +914,12 @@ process (char *folder, char *fname, int ofilen, int ofilec)
            if (arglist_head)
                fmt_free(NULL, 1);
 
-       default: 
+       default:
            if (ontty != PITTY)
                SIGNAL (SIGINT, SIG_IGN);
-           if (mhl_action == NULL && fp != stdin)
+           if (mhl_action == NULL && fp != stdin && fp != NULL)
                fclose (fp);
-           free (cp);
+               free (cp);
            if (holder.c_text) {
                free (holder.c_text);
                holder.c_text = NULL;
index 304c9a5..58347d4 100644 (file)
@@ -331,8 +331,7 @@ getln (char *buffer, int n)
     char *cp;
     static int quoting = 0;
 
-    cp = buffer;
-    *cp = 0;
+    *buffer = 0;
 
     switch (setjmp (sigenv)) {
        case OK: 
@@ -348,6 +347,9 @@ getln (char *buffer, int n)
            return NOTOK;
     }
 
+    cp = buffer;
+    *cp = 0;
+
     for (;;) {
        switch (c = getchar ()) {
            case EOF: