forked from aniani/vim
patch 7.4.2131
Problem: More memory leaks when using partial, e.g. for "exit-cb". Solution: Don't copy the callback when using a partial.
This commit is contained in:
@@ -1272,10 +1272,14 @@ channel_set_req_callback(
|
|||||||
|
|
||||||
if (item != NULL)
|
if (item != NULL)
|
||||||
{
|
{
|
||||||
item->cq_callback = vim_strsave(callback);
|
|
||||||
item->cq_partial = partial;
|
item->cq_partial = partial;
|
||||||
if (partial != NULL)
|
if (partial != NULL)
|
||||||
|
{
|
||||||
++partial->pt_refcount;
|
++partial->pt_refcount;
|
||||||
|
item->cq_callback = callback;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
item->cq_callback = vim_strsave(callback);
|
||||||
item->cq_seq_nr = id;
|
item->cq_seq_nr = id;
|
||||||
item->cq_prev = head->cq_prev;
|
item->cq_prev = head->cq_prev;
|
||||||
head->cq_prev = item;
|
head->cq_prev = item;
|
||||||
@@ -4465,10 +4469,14 @@ job_set_options(job_T *job, jobopt_T *opt)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
job->jv_exit_cb = vim_strsave(opt->jo_exit_cb);
|
|
||||||
job->jv_exit_partial = opt->jo_exit_partial;
|
job->jv_exit_partial = opt->jo_exit_partial;
|
||||||
if (job->jv_exit_partial != NULL)
|
if (job->jv_exit_partial != NULL)
|
||||||
|
{
|
||||||
|
job->jv_exit_cb = opt->jo_exit_cb;
|
||||||
++job->jv_exit_partial->pt_refcount;
|
++job->jv_exit_partial->pt_refcount;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
job->jv_exit_cb = vim_strsave(opt->jo_exit_cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -763,6 +763,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 */
|
||||||
|
/**/
|
||||||
|
2131,
|
||||||
/**/
|
/**/
|
||||||
2130,
|
2130,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user