diff options
-rw-r--r-- | src/nvim/buffer.c | 2 | ||||
-rw-r--r-- | src/nvim/eval.c | 16 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 19 | ||||
-rw-r--r-- | src/nvim/misc1.c | 8 |
4 files changed, 18 insertions, 27 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index db611823fc..67cd5a3094 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -1908,7 +1908,7 @@ static char_u *fname_match(regprog_T *prog, char_u *name) else { /* Replace $(HOME) with '~' and try matching again. */ p = home_replace_save(NULL, name); - if (p != NULL && vim_regexec(®match, p, (colnr_T)0)) + if (vim_regexec(®match, p, (colnr_T)0)) match = name; free(p); } diff --git a/src/nvim/eval.c b/src/nvim/eval.c index c2adbc8fbf..395d7f19d9 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -18645,17 +18645,13 @@ int store_session_globals(FILE *fd) */ void last_set_msg(scid_T scriptID) { - char_u *p; - if (scriptID != 0) { - p = home_replace_save(NULL, get_scriptname(scriptID)); - if (p != NULL) { - verbose_enter(); - MSG_PUTS(_("\n\tLast set from ")); - MSG_PUTS(p); - free(p); - verbose_leave(); - } + char_u *p = home_replace_save(NULL, get_scriptname(scriptID)); + verbose_enter(); + MSG_PUTS(_("\n\tLast set from ")); + MSG_PUTS(p); + free(p); + verbose_leave(); } } diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 66a4ac71c3..6e02c741eb 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -7909,8 +7909,7 @@ makeopens ( return FAIL; } else if (ssop_flags & SSOP_CURDIR) { sname = home_replace_save(NULL, globaldir != NULL ? globaldir : dirnow); - if (sname == NULL - || fputs("cd ", fd) < 0 + if (fputs("cd ", fd) < 0 || ses_put_fname(fd, sname, &ssop_flags) == FAIL || put_eol(fd) == FAIL) { free(sname); @@ -8535,17 +8534,13 @@ static int ses_fname(FILE *fd, buf_T *buf, unsigned *flagp) * Write a file name to the session file. * Takes care of the "slash" option in 'sessionoptions' and escapes special * characters. - * Returns FAIL if writing fails or out of memory. + * Returns FAIL if writing fails. */ static int ses_put_fname(FILE *fd, char_u *name, unsigned *flagp) { - char_u *sname; char_u *p; - int retval = OK; - sname = home_replace_save(NULL, name); - if (sname == NULL) - return FAIL; + char_u *sname = home_replace_save(NULL, name); if (*flagp & SSOP_SLASH) { /* change all backslashes to forward slashes */ @@ -8559,11 +8554,13 @@ static int ses_put_fname(FILE *fd, char_u *name, unsigned *flagp) free(sname); /* write the result */ - if (fputs((char *)p, fd) < 0) - retval = FAIL; + if (fputs((char *)p, fd) < 0) { + free(p); + return FAIL; + } free(p); - return retval; + return OK; } /* diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 21070b323a..f025ff7f65 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -24,6 +24,7 @@ #include "nvim/ex_docmd.h" #include "nvim/ex_getln.h" #include "nvim/fileio.h" +#include "nvim/func_attr.h" #include "nvim/fold.h" #include "nvim/getchar.h" #include "nvim/indent.h" @@ -3278,20 +3279,17 @@ home_replace ( /* * Like home_replace, store the replaced string in allocated memory. - * When something fails, NULL is returned. */ char_u * home_replace_save ( buf_T *buf, /* when not NULL, check for help files */ char_u *src /* input file name */ -) +) FUNC_ATTR_NONNULL_RET { - char_u *dst; - size_t len = 3; /* space for "~/" and trailing NUL */ if (src != NULL) /* just in case */ len += STRLEN(src); - dst = xmalloc(len); + char_u *dst = xmalloc(len); home_replace(buf, src, dst, (int)len, TRUE); return dst; } |