summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.c14
-rw-r--r--src/version.c2
2 files changed, 11 insertions, 5 deletions
diff --git a/src/eval.c b/src/eval.c
index 3369789b3..642f7ea10 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -16465,9 +16465,12 @@ list2fpos(arg, posp, fnump)
long i = 0;
long n;
- /* List must be: [fnum, lnum, col, coladd] */
- if (arg->v_type != VAR_LIST || l == NULL
- || l->lv_len != (fnump == NULL ? 3 : 4))
+ /* List must be: [fnum, lnum, col, coladd], where "fnum" is only there
+ * when "fnump" isn't NULL and "coladd" is optional. */
+ if (arg->v_type != VAR_LIST
+ || l == NULL
+ || l->lv_len < (fnump == NULL ? 2 : 3)
+ || l->lv_len > (fnump == NULL ? 3 : 4))
return FAIL;
if (fnump != NULL)
@@ -16493,8 +16496,9 @@ list2fpos(arg, posp, fnump)
#ifdef FEAT_VIRTUALEDIT
n = list_find_nr(l, i, NULL);
if (n < 0)
- return FAIL;
- posp->coladd = n;
+ posp->coladd = 0;
+ else
+ posp->coladd = n;
#endif
return OK;
diff --git a/src/version.c b/src/version.c
index 038e4acd1..48e0fd67e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 41,
+/**/
40,
/**/
39,