forked from aniani/vim
updated for version 7.3.746
Problem: Memory leaks when using location lists. Solution: Set qf_title to something. (Christian Brabandt)
This commit is contained in:
@@ -16292,7 +16292,8 @@ set_qf_ll_list(wp, list_arg, action_arg, rettv)
|
|||||||
action = *act;
|
action = *act;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (l != NULL && set_errorlist(wp, l, action, NULL) == OK)
|
if (l != NULL && set_errorlist(wp, l, action,
|
||||||
|
(char_u *)(wp == NULL ? "setqflist()" : "setloclist()")) == OK)
|
||||||
rettv->vval.v_number = 0;
|
rettv->vval.v_number = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -2124,15 +2124,22 @@ qf_free(qi, idx)
|
|||||||
int idx;
|
int idx;
|
||||||
{
|
{
|
||||||
qfline_T *qfp;
|
qfline_T *qfp;
|
||||||
|
int stop = FALSE;
|
||||||
|
|
||||||
while (qi->qf_lists[idx].qf_count)
|
while (qi->qf_lists[idx].qf_count)
|
||||||
{
|
{
|
||||||
qfp = qi->qf_lists[idx].qf_start->qf_next;
|
qfp = qi->qf_lists[idx].qf_start->qf_next;
|
||||||
if (qi->qf_lists[idx].qf_title != NULL)
|
if (qi->qf_lists[idx].qf_title != NULL && !stop)
|
||||||
{
|
{
|
||||||
vim_free(qi->qf_lists[idx].qf_start->qf_text);
|
vim_free(qi->qf_lists[idx].qf_start->qf_text);
|
||||||
|
stop = (qi->qf_lists[idx].qf_start == qfp);
|
||||||
vim_free(qi->qf_lists[idx].qf_start->qf_pattern);
|
vim_free(qi->qf_lists[idx].qf_start->qf_pattern);
|
||||||
vim_free(qi->qf_lists[idx].qf_start);
|
vim_free(qi->qf_lists[idx].qf_start);
|
||||||
|
if (stop)
|
||||||
|
/* Somehow qf_count may have an incorrect value, set it to 1
|
||||||
|
* to avoid crashing when it's wrong.
|
||||||
|
* TODO: Avoid qf_count being incorrect. */
|
||||||
|
qi->qf_lists[idx].qf_count = 1;
|
||||||
}
|
}
|
||||||
qi->qf_lists[idx].qf_start = qfp;
|
qi->qf_lists[idx].qf_start = qfp;
|
||||||
--qi->qf_lists[idx].qf_count;
|
--qi->qf_lists[idx].qf_count;
|
||||||
|
@@ -725,6 +725,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 */
|
||||||
|
/**/
|
||||||
|
746,
|
||||||
/**/
|
/**/
|
||||||
745,
|
745,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user