summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/getchar.c5
-rw-r--r--src/testdir/test_registers.vim9
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/getchar.c b/src/getchar.c
index c0dfc2b0b8..49eb3d7df9 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 bbc7c1911d..89d9d7cad7 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 2f872e9811..bc956cee0a 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,