aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval.c10
-rw-r--r--src/nvim/eval/encode.c4
-rw-r--r--src/nvim/ex_getln.c1
3 files changed, 10 insertions, 5 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 6271603a1d..b45cfcb427 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -14545,12 +14545,14 @@ static void f_setline(typval_T *argvars, typval_T *rettv, FunPtr fptr)
// Default result is zero == OK.
for (;; ) {
+ if (argvars[1].v_type == VAR_LIST) {
// List argument, get next string.
- if (li == NULL) {
- break;
+ if (li == NULL) {
+ break;
+ }
+ line = tv_get_string_chk(TV_LIST_ITEM_TV(li));
+ li = TV_LIST_ITEM_NEXT(l, li);
}
- line = tv_get_string_chk(TV_LIST_ITEM_TV(li));
- li = TV_LIST_ITEM_NEXT(l, li);
rettv->vval.v_number = 1; // FAIL
if (line == NULL || lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1) {
diff --git a/src/nvim/eval/encode.c b/src/nvim/eval/encode.c
index 50ddb1f38c..85fd4d1578 100644
--- a/src/nvim/eval/encode.c
+++ b/src/nvim/eval/encode.c
@@ -140,7 +140,9 @@ static int conv_error(const char *const msg, const MPConvStack *const mpstack,
? tv_list_last(v.data.l.list)
: TV_LIST_ITEM_PREV(v.data.l.list,
v.data.l.li));
- int idx = (int)tv_list_idx_of_item(v.data.l.list, li);
+ int idx = (li == NULL
+ ? 0
+ : (int)tv_list_idx_of_item(v.data.l.list, li));
if (v.type == kMPConvList
|| li == NULL
|| (TV_LIST_ITEM_TV(li)->v_type != VAR_LIST
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index fcd230d535..a5a8804e1c 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -2680,6 +2680,7 @@ static bool color_cmdline(CmdlineInfo *colored_ccline)
.end = end,
.attr = attr,
}));
+ i++;
});
if (prev_end < colored_ccline->cmdlen) {
kv_push(ccline_colors->colors, ((CmdlineColorChunk) {