aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/eval')
-rw-r--r--src/nvim/eval/funcs.c3
-rw-r--r--src/nvim/eval/typval.c10
2 files changed, 7 insertions, 6 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index e350d09935..b97bd6b10d 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -9519,7 +9519,7 @@ static void f_split(typval_T *argvars, typval_T *rettv, FunPtr fptr)
tv_list_alloc_ret(rettv, kListLenMayKnow);
if (typeerr) {
- return;
+ goto theend;
}
regmatch_T regmatch = {
@@ -9563,6 +9563,7 @@ static void f_split(typval_T *argvars, typval_T *rettv, FunPtr fptr)
vim_regfree(regmatch.regprog);
}
+theend:
p_cpo = save_cpo;
}
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c
index ef8e66a992..8dde78de3d 100644
--- a/src/nvim/eval/typval.c
+++ b/src/nvim/eval/typval.c
@@ -1779,9 +1779,9 @@ int tv_dict_add_bool(dict_T *const d, const char *const key,
int tv_dict_add_str(dict_T *const d,
const char *const key, const size_t key_len,
const char *const val)
- FUNC_ATTR_NONNULL_ALL
+ FUNC_ATTR_NONNULL_ARG(1, 2)
{
- return tv_dict_add_allocated_str(d, key, key_len, xstrdup(val));
+ return tv_dict_add_str_len(d, key, key_len, val, -1);
}
/// Add a string entry to dictionary
@@ -1795,10 +1795,10 @@ int tv_dict_add_str(dict_T *const d,
/// @return OK in case of success, FAIL when key already exists.
int tv_dict_add_str_len(dict_T *const d,
const char *const key, const size_t key_len,
- char *const val, int len)
+ const char *const val, int len)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
- char *s = val ? val : "";
+ char *s = NULL;
if (val != NULL) {
s = (len < 0) ? xstrdup(val) : xstrndup(val, (size_t)len);
}
@@ -1821,7 +1821,7 @@ int tv_dict_add_str_len(dict_T *const d,
int tv_dict_add_allocated_str(dict_T *const d,
const char *const key, const size_t key_len,
char *const val)
- FUNC_ATTR_NONNULL_ALL
+ FUNC_ATTR_NONNULL_ARG(1, 2)
{
dictitem_T *const item = tv_dict_item_alloc_len(key, key_len);