aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c19
-rw-r--r--src/nvim/strings.c2
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
{