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);
vim_regfree(efm_ptr->prog);
vim_free(efm_ptr);
}
+ fmt_start = NULL;
}
/* Parse 'errorformat' option */
qffields_T *fields)
{
efm_T *fmt_ptr;
- static efm_T *fmt_start = NULL; /* cached across calls */
char_u *ptr;
int len;
int i;
set efm&vim
endfunction
+
+function Test_caddbuffer()
+ " This used to cause a memory access in freed memory
+ let save_efm = &efm
+ set efm=%EEEE%m,%WWWW,%+CCCC%>%#,%GGGG%.#
+ cgetexpr ['WWWW', 'EEEE', 'CCCC']
+ let &efm = save_efm
+ cad
+ bwipe!
+endfunc