aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2020-11-24 21:37:52 +0000
committerSean Dewar <seandewar@users.noreply.github.com>2021-09-15 21:53:38 +0100
commitd346ac536fbb7716e6a0d0f5ca7af9c39ec95de0 (patch)
tree566855950bd233db27f33f4518fb2f6ed19fa2f0 /src/nvim/eval/funcs.c
parent7200454ee6f500bb851bea992707c019d9982cb9 (diff)
downloadrneovim-d346ac536fbb7716e6a0d0f5ca7af9c39ec95de0.tar.gz
rneovim-d346ac536fbb7716e6a0d0f5ca7af9c39ec95de0.tar.bz2
rneovim-d346ac536fbb7716e6a0d0f5ca7af9c39ec95de0.zip
vim-patch:8.1.0742: not all Blob operations are tested
Problem: Not all Blob operations are tested. Solution: Add more testing for Blob. https://github.com/vim/vim/commit/05500ece6282407f9f7227aaf564e24147326863 Test_readfile_binary is already ported.
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index dbb00da911..3c25d76866 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -325,8 +325,13 @@ static void f_add(typval_T *argvars, typval_T *rettv, FunPtr fptr)
blob_T *const b = argvars[0].vval.v_blob;
if (b != NULL
&& !var_check_lock(b->bv_lock, N_("add() argument"), TV_TRANSLATE)) {
- ga_append(&b->bv_ga, (char_u)tv_get_number(&argvars[1]));
- tv_copy(&argvars[0], rettv);
+ bool error = false;
+ const varnumber_T n = tv_get_number_chk(&argvars[1], &error);
+
+ if (!error) {
+ ga_append(&b->bv_ga, (int)n);
+ tv_copy(&argvars[0], rettv);
+ }
}
} else {
EMSG(_(e_listreq));
@@ -4827,6 +4832,12 @@ static void f_index(typval_T *argvars, typval_T *rettv, FunPtr fptr)
if (b == NULL) {
return;
}
+ if (start < 0) {
+ start = tv_blob_len(b) + start;
+ if (start < 0) {
+ start = 0;
+ }
+ }
for (idx = start; idx < tv_blob_len(b); idx++) {
typval_T tv;
tv.v_type = VAR_NUMBER;