diff options
Diffstat (limited to 'src/nvim/os_unix.c')
| -rw-r--r-- | src/nvim/os_unix.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c index f7b47f9569..15185aca49 100644 --- a/src/nvim/os_unix.c +++ b/src/nvim/os_unix.c @@ -13,6 +13,7 @@   * changed beyond recognition.   */ +#include <assert.h>  #include <errno.h>  #include <inttypes.h>  #include <stdbool.h> @@ -1162,6 +1163,8 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,    len = ftell(fd);                      /* get size of temp file */    fseek(fd, 0L, SEEK_SET);    buffer = xmalloc(len + 1); +  // fread() doesn't terminate buffer with NUL; +  // appropiate termination (not always NUL) is done below.    i = fread((char *)buffer, 1, len, fd);    fclose(fd);    os_remove((char *)tempname); @@ -1174,8 +1177,6 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,    }    free(tempname); - -    /* file names are separated with Space */    if (shell_style == STYLE_ECHO) {      buffer[len] = '\n';                 /* make sure the buffer ends in NL */ @@ -1235,6 +1236,8 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,      if (len)        ++i;                              /* count last entry */    } +  assert(buffer[len] == NUL || buffer[len] == '\n'); +    if (i == 0) {      /*       * Can happen when using /bin/sh and typing ":e $NO_SUCH_VAR^I".  | 
