]> diplodocus.org Git - nmh/blobdiff - sbr/read_switch_multiword.c
Fix invalid pointer arithmetic.
[nmh] / sbr / read_switch_multiword.c
index 5c83eec83cbf42c1876cfc5565cd56045a2202f3..a5aedae35242cb811f389c2e40da3882472721c3 100644 (file)
@@ -1,5 +1,4 @@
-/*
- * read_switch_multiword.c -- get an answer from the user and return a string array
+/* read_switch_multiword.c -- get an answer from the user and return a string array
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -26,12 +25,11 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
     SIGNAL_HANDLER istat = NULL;
     char *cp, **cpp;
 
-    if (!(sigsetjmp(sigenv, 1))) {
-       istat = SIGNAL (SIGINT, intrser);
-    } else {
+    if (sigsetjmp(sigenv, 1)) {
        SIGNAL (SIGINT, istat);
        return NULL;
     }
+    istat = SIGNAL (SIGINT, intrser);
 
     for (;;) {
        fputs(prompt, stdout);
@@ -51,7 +49,7 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
                 * then just return.
                 */
 
-               else if (ferror(stdin)) {
+               if (ferror(stdin)) {
                    if (errno == EINTR) {
                        clearerr(stdin);
                        continue;
@@ -59,14 +57,11 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
                    fprintf(stderr, "\nError %s during read\n",
                            strerror(errno));
                    siglongjmp (sigenv, 1);
-               } else {
-                   /*
-                    * Just for completeness's sake ...
-                    */
-
-                   fprintf(stderr, "\nUnknown problem in getchar()\n");
-                   siglongjmp (sigenv, 1);
                }
+
+                /* Just for completeness's sake... */
+                fprintf(stderr, "\nUnknown problem in getchar()\n");
+                siglongjmp(sigenv, 1);
            }
            if (cp < &ansbuf[sizeof ansbuf - 1])
                *cp++ = i;
@@ -98,8 +93,5 @@ intrser (int i)
 {
     NMH_UNUSED (i);
 
-    /*
-     * should this be siglongjmp?
-     */
     siglongjmp (sigenv, 1);
 }