mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.0331: restoring help snapshot accesses freed memory
Problem: Restoring help snapshot accesses freed memory. (Dominique Pelle) Solution: Don't restore a snapshot when the window closes.
This commit is contained in:
@@ -2132,6 +2132,7 @@ test_arglist \
|
|||||||
test_goto \
|
test_goto \
|
||||||
test_gui \
|
test_gui \
|
||||||
test_hardcopy \
|
test_hardcopy \
|
||||||
|
test_help \
|
||||||
test_help_tagjump \
|
test_help_tagjump \
|
||||||
test_hide \
|
test_hide \
|
||||||
test_history \
|
test_history \
|
||||||
|
@@ -154,6 +154,7 @@ NEW_TESTS = test_arglist.res \
|
|||||||
test_gn.res \
|
test_gn.res \
|
||||||
test_gui.res \
|
test_gui.res \
|
||||||
test_hardcopy.res \
|
test_hardcopy.res \
|
||||||
|
test_help.res \
|
||||||
test_hide.res \
|
test_hide.res \
|
||||||
test_history.res \
|
test_history.res \
|
||||||
test_hlsearch.res \
|
test_hlsearch.res \
|
||||||
|
10
src/testdir/test_help.vim
Normal file
10
src/testdir/test_help.vim
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
" Tests for :help
|
||||||
|
|
||||||
|
func Test_help_restore_snapshot()
|
||||||
|
help
|
||||||
|
set buftype=
|
||||||
|
help
|
||||||
|
edit x
|
||||||
|
help
|
||||||
|
helpclose
|
||||||
|
endfunc
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
331,
|
||||||
/**/
|
/**/
|
||||||
330,
|
330,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -6551,7 +6551,7 @@ restore_snapshot(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if frames "sn" and "fr" have the same layout, same following frames
|
* Check if frames "sn" and "fr" have the same layout, same following frames
|
||||||
* and same children.
|
* and same children. And the window pointer is valid.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
check_snapshot_rec(frame_T *sn, frame_T *fr)
|
check_snapshot_rec(frame_T *sn, frame_T *fr)
|
||||||
@@ -6562,7 +6562,8 @@ check_snapshot_rec(frame_T *sn, frame_T *fr)
|
|||||||
|| (sn->fr_next != NULL
|
|| (sn->fr_next != NULL
|
||||||
&& check_snapshot_rec(sn->fr_next, fr->fr_next) == FAIL)
|
&& check_snapshot_rec(sn->fr_next, fr->fr_next) == FAIL)
|
||||||
|| (sn->fr_child != NULL
|
|| (sn->fr_child != NULL
|
||||||
&& check_snapshot_rec(sn->fr_child, fr->fr_child) == FAIL))
|
&& check_snapshot_rec(sn->fr_child, fr->fr_child) == FAIL)
|
||||||
|
|| !win_valid(sn->fr_win))
|
||||||
return FAIL;
|
return FAIL;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user