Permalink
Browse files

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.
  • Loading branch information...
brammool committed Oct 14, 2017
1 parent ac8069b commit b2c8750c4e95f64a8dff912af81e13318b3f6ed6
Showing with 9 additions and 1 deletion.
  1. +2 −0 src/buffer.c
  2. +5 −1 src/testdir/test_autocmd.vim
  3. +2 −0 src/version.c
View
@@ -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
View
@@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1193,
/**/
1192,
/**/

0 comments on commit b2c8750

Please sign in to comment.