mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.1193: crash when wiping out a buffer after using getbufinfo()
Problem: Crash when wiping out a buffer after using getbufinfo(). (Yegappan Lakshmanan) Solution: Remove b:changedtick from the buffer variables.
This commit is contained in:
@@ -837,6 +837,8 @@ free_buffer(buf_T *buf)
|
||||
++buf_free_count;
|
||||
free_buffer_stuff(buf, TRUE);
|
||||
#ifdef FEAT_EVAL
|
||||
/* b:changedtick uses an item in buf_T, remove it now */
|
||||
dictitem_remove(buf->b_vars, (dictitem_T *)&buf->b_ct_di);
|
||||
unref_var_dict(buf->b_vars);
|
||||
#endif
|
||||
#ifdef FEAT_LUA
|
||||
|
@@ -769,10 +769,14 @@ func Test_BufLeave_Wipe()
|
||||
bwipe!
|
||||
call assert_equal(1, line('$'))
|
||||
call assert_equal('', bufname('%'))
|
||||
call assert_equal(1, len(getbufinfo()))
|
||||
let g:bufinfo = getbufinfo()
|
||||
call assert_equal(1, len(g:bufinfo))
|
||||
|
||||
call delete('Xxx1')
|
||||
call delete('Xxx2')
|
||||
%bwipe
|
||||
au! BufLeave
|
||||
|
||||
" check that bufinfo doesn't contain a pointer to freed memory
|
||||
call test_garbagecollect_now()
|
||||
endfunc
|
||||
|
@@ -761,6 +761,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1193,
|
||||
/**/
|
||||
1192,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user