patch 8.2.4478: crash when using fuzzy completion
Problem: Crash when using fuzzy completion.
Solution: Temporary fix: put back regexp. (closes #9852, closes #9851)
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index dd8bc06..003f6da 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -2496,6 +2496,8 @@
int ret;
int flags;
char_u *tofree = NULL;
+ int fuzzy = cmdline_fuzzy_complete(pat)
+ && cmdline_fuzzy_completion_supported(xp);
flags = map_wildopts_to_ewflags(options);
@@ -2580,12 +2582,15 @@
pat = tofree;
}
- regmatch.regprog = vim_regcomp(pat, magic_isset() ? RE_MAGIC : 0);
- if (regmatch.regprog == NULL)
- return FAIL;
+ if (!fuzzy)
+ {
+ regmatch.regprog = vim_regcomp(pat, magic_isset() ? RE_MAGIC : 0);
+ if (regmatch.regprog == NULL)
+ return FAIL;
- // set ignore-case according to p_ic, p_scs and pat
- regmatch.rm_ic = ignorecase(pat);
+ // set ignore-case according to p_ic, p_scs and pat
+ regmatch.rm_ic = ignorecase(pat);
+ }
if (xp->xp_context == EXPAND_SETTINGS
|| xp->xp_context == EXPAND_BOOL_SETTINGS)
@@ -2599,7 +2604,8 @@
else
ret = ExpandOther(pat, xp, ®match, matches, numMatches);
- vim_regfree(regmatch.regprog);
+ if (!fuzzy)
+ vim_regfree(regmatch.regprog);
vim_free(tofree);
return ret;