diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/eval.c | 19 | ||||
| -rw-r--r-- | src/nvim/strings.c | 2 | 
2 files changed, 7 insertions, 14 deletions
| diff --git a/src/nvim/eval.c b/src/nvim/eval.c index b5efadb554..faa80ed0fa 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -11914,15 +11914,10 @@ static void f_resolve(typval_T *argvars, typval_T *rettv)           * concatenate the remainders. */          q = path_next_component(vim_ispathsep(*buf) ? buf + 1 : buf);          if (*q != NUL) { -          if (remain == NULL) -            remain = vim_strsave(q - 1); -          else { -            cpy = concat_str(q - 1, remain); -            if (cpy != NULL) { -              free(remain); -              remain = cpy; -            } -          } +          cpy = remain; +          remain = remain ? +            concat_str(q - 1, remain) : (char_u *) xstrdup((char *)q - 1); +          free(cpy);            q[-1] = NUL;          } @@ -11978,10 +11973,8 @@ static void f_resolve(typval_T *argvars, typval_T *rettv)                             || vim_ispathsep(p[2])))))) {          /* Prepend "./". */          cpy = concat_str((char_u *)"./", p); -        if (cpy != NULL) { -          free(p); -          p = cpy; -        } +        free(p); +        p = cpy;        } else if (!is_relative_to_current) {          /* Strip leading "./". */          q = p; diff --git a/src/nvim/strings.c b/src/nvim/strings.c index ac0e5e1aef..45aec5841b 100644 --- a/src/nvim/strings.c +++ b/src/nvim/strings.c @@ -15,6 +15,7 @@  #include "nvim/fileio.h"  #include "nvim/func_attr.h"  #include "nvim/fold.h" +#include "nvim/func_attr.h"  #include "nvim/getchar.h"  #include "nvim/mark.h"  #include "nvim/mbyte.h" @@ -514,7 +515,6 @@ int has_non_ascii(char_u *s)  /*   * Concatenate two strings and return the result in allocated memory. - * Returns NULL when out of memory.   */  char_u *concat_str(char_u *str1, char_u *str2) FUNC_ATTR_NONNULL_RET  { | 
