diff options
Diffstat (limited to 'src/nvim/eval')
-rw-r--r-- | src/nvim/eval/funcs.c | 3 | ||||
-rw-r--r-- | src/nvim/eval/typval.c | 10 |
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); |