]> diplodocus.org Git - nmh/blobdiff - sbr/read_switch_multiword_via_readline.c
Fix invalid pointer arithmetic.
[nmh] / sbr / read_switch_multiword_via_readline.c
index fe84b4e06e0629a8ba1d95de44f66a5225b741aa..0c099c565240e70b855c72d57bd14fc8f96b7237 100644 (file)
@@ -49,6 +49,8 @@ read_switch_multiword_via_readline(char *prompt, struct swit *ansp)
        add_history(ans);
        strncpy(ansbuf, ans, sizeof(ansbuf));
        ansbuf[sizeof(ansbuf) - 1] = '\0';
+        free(ans);
+
        cpp = brkstring(ansbuf, " ", NULL);
        switch (smatch(*cpp, ansp)) {
            case AMBIGSW:
@@ -58,10 +60,8 @@ read_switch_multiword_via_readline(char *prompt, struct swit *ansp)
                printf(" -%s unknown. Hit <CR> for help.\n", *cpp);
                continue;
            default:
-               free(ans);
                return cpp;
        }
-       free(ans);
     }
 }
 
@@ -75,16 +75,12 @@ initialize_readline(void)
 static char **
 nmh_completion(const char *text, int start, int end)
 {
-    char **matches;
-
     NMH_UNUSED (end);
 
-    matches = (char **) NULL;
-
     if (start == 0)
-       matches = rl_completion_matches(text, nmh_command_generator);
+       return rl_completion_matches(text, nmh_command_generator);
 
-    return matches;
+    return NULL;
 }
 
 static char *