summaryrefslogtreecommitdiff
path: root/src/quickfix.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-11-12 15:36:54 +0100
committerBram Moolenaar <Bram@vim.org>2016-11-12 15:36:54 +0100
commit63bed3d319b5d90765dbdae93a3579b6322d79fb (patch)
tree001e1f98871cd66bfc6fe5a93036dffae71fe63d /src/quickfix.c
parente3505dfc858260a21f2bbc6056f5769dea2f273d (diff)
downloadvim-git-8.0.0078.tar.gz
patch 8.0.0078v8.0.0078
Problem: Accessing freed memory in quickfix. Solution: Reset pointer when freeing 'errorformat'. (Domenique Pelle)
Diffstat (limited to 'src/quickfix.c')
-rw-r--r--src/quickfix.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index a563fa946..631aaeaaf 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -114,6 +114,8 @@ struct efm_S
int conthere; /* %> used */
};
+static efm_T *fmt_start = NULL; /* cached across qf_parse_line() calls */
+
static int qf_init_ext(qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title);
static void qf_store_title(qf_info_T *qi, char_u *title);
static void qf_new_list(qf_info_T *qi, char_u *qf_title);
@@ -389,6 +391,7 @@ free_efm_list(efm_T **efm_first)
vim_regfree(efm_ptr->prog);
vim_free(efm_ptr);
}
+ fmt_start = NULL;
}
/* Parse 'errorformat' option */
@@ -786,7 +789,6 @@ qf_parse_line(
qffields_T *fields)
{
efm_T *fmt_ptr;
- static efm_T *fmt_start = NULL; /* cached across calls */
char_u *ptr;
int len;
int i;