summaryrefslogtreecommitdiffstats
path: root/src/blob.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/blob.c
parentb47bed2f7ada4dfae78f76f27473b83507e40315 (diff)
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/blob.c')
-rw-r--r--src/blob.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/blob.c b/src/blob.c
index d758beb19d..f020966ae2 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -337,6 +337,36 @@ blob_slice_or_index(
}
/*
+ * Check if "n1"- is a valid index for a blobl with length "bloblen".
+ */
+ int
+check_blob_index(long bloblen, varnumber_T n1, int is_range, int quiet)
+{
+ if (n1 < 0 || n1 > bloblen)
+ {
+ if (!quiet)
+ semsg(_(e_blobidx), n1);
+ return FAIL;
+ }
+ return OK;
+}
+
+/*
+ * Check if "n1"-"n2" is a valid range for a blob with length "bloblen".
+ */
+ int
+check_blob_range(long bloblen, varnumber_T n1, varnumber_T n2, int quiet)
+{
+ if (n2 < 0 || n2 >= bloblen || n2 < n1)
+ {
+ if (!quiet)
+ semsg(_(e_blobidx), n2);
+ return FAIL;
+ }
+ return OK;
+}
+
+/*
* Set bytes "n1" to "n2" (inclusive) in "dest" to the value of "src".
* Caller must make sure "src" is a blob.
* Returns FAIL if the number of bytes does not match.