summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index 45efab72c..8728608e8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -4696,8 +4696,8 @@ eval7(arg, rettv, evaluate)
}
/*
- * Evaluate an "[expr]" or "[expr:expr]" index.
- * "*arg" points to the '['.
+ * Evaluate an "[expr]" or "[expr:expr]" index. Also "dict.key".
+ * "*arg" points to the '[' or '.'.
* Returns FAIL or OK. "*arg" is advanced to after the ']'.
*/
static int
@@ -4867,7 +4867,9 @@ eval_index(arg, rettv, evaluate, verbose)
if (n2 < 0)
n2 = len + n2;
- if (!empty2 && (n2 < 0 || n2 >= len || n2 + 1 < n1))
+ else if (n2 >= len)
+ n2 = len - 1;
+ if (!empty2 && (n2 < 0 || n2 + 1 < n1))
{
if (verbose)
EMSGN(_(e_listidx), n2);