Skip to content

Commit

Permalink
patch 9.0.0770: quickfix commands may keep memory allocated
Browse files Browse the repository at this point in the history
Problem:    Quickfix commands may keep memory allocated.
Solution:   Free memory when it's a bit much. (Yegappan Lakshmanan,
            closes #11379)
  • Loading branch information
yegappan authored and brammool committed Oct 16, 2022
1 parent db4c947 commit d8cd6f7
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/quickfix.c
Expand Up @@ -236,12 +236,28 @@ qfga_get(void)
ga_init2(&qfga, 1, 256);
}

// Retain ga_data from previous use. Reset the length to zero.
// Reset the length to zero. Retain ga_data from previous use to avoid
// many alloc/free calls.
qfga.ga_len = 0;

return &qfga;
}

/*
* The "qfga" grow array buffer is reused across multiple quickfix commands as
* a temporary buffer to reduce the number of alloc/free calls. But if the
* buffer size is large, then to avoid holding on to that memory, clear the
* grow array. Otherwise just reset the grow array length.
*/
static void
qfga_clear(void)
{
if (qfga.ga_maxlen > 1000)
ga_clear(&qfga);
else
qfga.ga_len = 0;
}

/*
* Maximum number of bytes allowed per line while reading a errorfile.
*/
Expand Down Expand Up @@ -3335,6 +3351,8 @@ qf_jump_print_msg(
msg_scroll = FALSE;
msg_attr_keep((char *)gap->ga_data, 0, TRUE);
msg_scroll = i;

qfga_clear();
}

/*
Expand Down Expand Up @@ -3744,6 +3762,7 @@ qf_list(exarg_T *eap)

ui_breakcheck();
}
qfga_clear();
}

/*
Expand Down Expand Up @@ -4820,6 +4839,8 @@ qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last, int qf_winid)
if (old_last == NULL)
// Delete the empty line which is now at the end
(void)ml_delete(lnum + 1);

qfga_clear();
}

// correct cursor position
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
770,
/**/
769,
/**/
Expand Down

0 comments on commit d8cd6f7

Please sign in to comment.