summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-15 22:16:42 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-15 22:16:42 +0100
commit2ea773b468a1143214c2f12b91ab5e1e7abb4a14 (patch)
tree54b8a7bd57ea53b6375ed04f2934172cffb2824a /src/evalfunc.c
parent177ab9e0262b1b3a6120bea655864ead487210e5 (diff)
patch 8.1.0755: error message for get() on a Blob with invalid indexv8.1.0755
Problem: Error message for get() on a Blob with invalid index. Solution: Return an empty Blob, like get() on a List does.
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index da4ffbf81e..830700eaa4 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -4408,10 +4408,15 @@ f_get(typval_T *argvars, typval_T *rettv)
if (!error)
{
rettv->v_type = VAR_NUMBER;
- if (idx >= blob_len(argvars[0].vval.v_blob))
- semsg(_(e_blobidx), idx);
+ if (idx < 0)
+ idx = blob_len(argvars[0].vval.v_blob) + idx;
+ if (idx < 0 || idx >= blob_len(argvars[0].vval.v_blob))
+ rettv->vval.v_number = -1;
else
+ {
rettv->vval.v_number = blob_get(argvars[0].vval.v_blob, idx);
+ tv = rettv;
+ }
}
}
else if (argvars[0].v_type == VAR_LIST)