Skip to content

Commit 57e69ff

Browse files
committed
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.
1 parent 623e263 commit 57e69ff

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

src/channel.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,10 +1272,14 @@ channel_set_req_callback(
12721272

12731273
if (item != NULL)
12741274
{
1275-
item->cq_callback = vim_strsave(callback);
12761275
item->cq_partial = partial;
12771276
if (partial != NULL)
1277+
{
12781278
++partial->pt_refcount;
1279+
item->cq_callback = callback;
1280+
}
1281+
else
1282+
item->cq_callback = vim_strsave(callback);
12791283
item->cq_seq_nr = id;
12801284
item->cq_prev = head->cq_prev;
12811285
head->cq_prev = item;
@@ -4465,10 +4469,14 @@ job_set_options(job_T *job, jobopt_T *opt)
44654469
}
44664470
else
44674471
{
4468-
job->jv_exit_cb = vim_strsave(opt->jo_exit_cb);
44694472
job->jv_exit_partial = opt->jo_exit_partial;
44704473
if (job->jv_exit_partial != NULL)
4474+
{
4475+
job->jv_exit_cb = opt->jo_exit_cb;
44714476
++job->jv_exit_partial->pt_refcount;
4477+
}
4478+
else
4479+
job->jv_exit_cb = vim_strsave(opt->jo_exit_cb);
44724480
}
44734481
}
44744482
}

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,8 @@ static char *(features[]) =
763763

764764
static int included_patches[] =
765765
{ /* Add new patch number below this line */
766+
/**/
767+
2131,
766768
/**/
767769
2130,
768770
/**/

0 commit comments

Comments
 (0)