summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-14 20:35:23 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-14 20:35:23 +0200
commit0e3ff1919603ee4c4a347fdf761dbdbdeb068015 (patch)
treedb3dc3df238da3a1c44116827796157cdd3346f0 /src/eval.c
parentb47bed2f7ada4dfae78f76f27473b83507e40315 (diff)
downloadvim-git-8.2.2765.tar.gz
patch 8.2.2765: Vim9: not all blob operations workv8.2.2765
Problem: Vim9: not all blob operations work. Solution: Run more tests also with Vim9 script and :def functions. Fix what doesn't work.
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/eval.c b/src/eval.c
index 99768ee28..d8607f2be 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1175,12 +1175,9 @@ get_lval(
lp->ll_n1 = (long)tv_get_number(&var1);
clear_tv(&var1);
- if (lp->ll_n1 < 0
- || lp->ll_n1 > bloblen
- || (lp->ll_range && lp->ll_n1 == bloblen))
+ if (check_blob_index(bloblen, lp->ll_n1, lp->ll_range, quiet)
+ == FAIL)
{
- if (!quiet)
- semsg(_(e_blobidx), lp->ll_n1);
clear_tv(&var2);
return NULL;
}
@@ -1188,14 +1185,9 @@ get_lval(
{
lp->ll_n2 = (long)tv_get_number(&var2);
clear_tv(&var2);
- if (lp->ll_n2 < 0
- || lp->ll_n2 >= bloblen
- || lp->ll_n2 < lp->ll_n1)
- {
- if (!quiet)
- semsg(_(e_blobidx), lp->ll_n2);
+ if (check_blob_range(bloblen, lp->ll_n1, lp->ll_n2, quiet)
+ == FAIL)
return NULL;
- }
}
lp->ll_blob = lp->ll_tv->vval.v_blob;
lp->ll_tv = NULL;