about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/cmd_ac.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c
index 6bab07ce..f60619a3 100644
--- a/src/command/cmd_ac.c
+++ b/src/command/cmd_ac.c
@@ -3002,18 +3002,26 @@ _complete_filepath(const char *const input, char *const startstr)
                 char * acstring;
                 if (output_off) {
                     if (asprintf(&tmp, "%s/%s", directory, dir->d_name) == -1) {
+                        free(foofile);
+                        free(directory);
                         return NULL;
                     }
                     if (asprintf(&acstring, "~/%s", tmp+output_off) == -1) {
+                        free(foofile);
+                        free(directory);
                         return NULL;
                     }
                     free(tmp);
                 } else if (strcmp(directory, "/") == 0) {
                     if (asprintf(&acstring, "/%s", dir->d_name) == -1) {
+                        free(foofile);
+                        free(directory);
                         return NULL;
                     }
                 } else {
                     if (asprintf(&acstring, "%s/%s", directory, dir->d_name) == -1) {
+                        free(foofile);
+                        free(directory);
                         return NULL;
                     }
                 }
@@ -3022,10 +3030,9 @@ _complete_filepath(const char *const input, char *const startstr)
             }
             closedir(d);
         }
-    } else {
-        free(foofile);
-        free(directory);
     }
+    free(foofile);
+    free(directory);
 
     result = autocomplete_param_with_ac(input, startstr, filepath_ac, TRUE);
     if (result) {