aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-28 16:06:56 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-02-28 16:51:31 +0800
commit55d30c459c878224507e90f2a6c1657cdd070668 (patch)
treeb15a5dcb6d11717e329d213570a570867bce7b60
parent88b70e7d4650795210222a598cbb233bf7fc98f8 (diff)
downloadrneovim-55d30c459c878224507e90f2a6c1657cdd070668.tar.gz
rneovim-55d30c459c878224507e90f2a6c1657cdd070668.tar.bz2
rneovim-55d30c459c878224507e90f2a6c1657cdd070668.zip
vim-patch:8.2.2783: duplicate code for setting byte in blob, blob test may fail
Problem: Duplicate code for setting byte in blob, blob test may fail. Solution: Call blob_set_append(). Test sort failure with "N". https://github.com/vim/vim/commit/e8209b91b9974da95899b51dba4058b411d04d5b Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r--src/nvim/eval.c13
-rw-r--r--src/nvim/testdir/test_blob.vim2
2 files changed, 2 insertions, 13 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 37029e0dd7..698172442e 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1620,18 +1620,7 @@ void set_var_lval(lval_T *lp, char *endp, typval_T *rettv, int copy, const bool
bool error = false;
const char val = (char)tv_get_number_chk(rettv, &error);
if (!error) {
- garray_T *const gap = &lp->ll_blob->bv_ga;
-
- // Allow for appending a byte. Setting a byte beyond
- // the end is an error otherwise.
- if (lp->ll_n1 < gap->ga_len || lp->ll_n1 == gap->ga_len) {
- ga_grow(&lp->ll_blob->bv_ga, 1);
- tv_blob_set(lp->ll_blob, (int)lp->ll_n1, (uint8_t)val);
- if (lp->ll_n1 == gap->ga_len) {
- gap->ga_len++;
- }
- }
- // error for invalid range was already given in get_lval()
+ tv_blob_set_append(lp->ll_blob, (int)lp->ll_n1, (uint8_t)val);
}
}
} else if (op != NULL && *op != '=') {
diff --git a/src/nvim/testdir/test_blob.vim b/src/nvim/testdir/test_blob.vim
index 99b8c6083a..b1859f9dfe 100644
--- a/src/nvim/testdir/test_blob.vim
+++ b/src/nvim/testdir/test_blob.vim
@@ -632,7 +632,7 @@ func Test_blob_sort()
if has('float')
call CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
endif
- call CheckLegacyAndVim9Failure(['call sort(["abc", 0z11], "f")'], 'E892:')
+ call CheckLegacyAndVim9Failure(['call sort([11, 0z11], "N")'], 'E974:')
endfunc
" The following used to cause an out-of-bounds memory access