diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-27 19:27:16 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-27 19:27:16 +0000 |
commit | a4bc2dd7cccf5a4a9f78b58b6f35a45d17164323 (patch) | |
tree | 24f9080819f0ab341fe959e3d3c25da2417f9278 | |
parent | 98cd30383a378eb5f2dbf1b4e887fa17b5494a64 (diff) | |
download | vim-git-a4bc2dd7cccf5a4a9f78b58b6f35a45d17164323.tar.gz |
patch 8.2.4233: crash when recording and using Select modev8.2.4233
Problem: Crash when recording and using Select mode.
Solution: When deleting the last recorded character check there is something
to delete.
-rw-r--r-- | src/getchar.c | 5 | ||||
-rw-r--r-- | src/testdir/test_registers.vim | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/getchar.c b/src/getchar.c index c0dfc2b0b..49eb3d7df 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -252,8 +252,11 @@ add_buff( static void delete_buff_tail(buffheader_T *buf, int slen) { - int len = (int)STRLEN(buf->bh_curr->b_str); + int len; + if (buf->bh_curr == NULL || buf->bh_curr->b_str == NULL) + return; // nothing to delete + len = (int)STRLEN(buf->bh_curr->b_str); if (len >= slen) { buf->bh_curr->b_str[len - slen] = NUL; diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim index bbc7c1911..89d9d7cad 100644 --- a/src/testdir/test_registers.vim +++ b/src/testdir/test_registers.vim @@ -739,6 +739,15 @@ func Test_record_in_insert_mode() bwipe! endfunc +func Test_record_in_select_mode() + new + call setline(1, 'text') + sil norm q00 + sil norm q + call assert_equal('0ext', getline(1)) + bwipe! +endfunc + " Make sure that y_append is correctly reset " and the previous register is working as expected func Test_register_y_append_reset() diff --git a/src/version.c b/src/version.c index 2f872e981..bc956cee0 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4233, +/**/ 4232, /**/ 4231, |