diff --git a/src/buffer.c b/src/buffer.c index 1ca561fce2..5937a9e12d 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2971,7 +2971,11 @@ ExpandBufnames( else p = vim_strsave(p); if (p == NULL) + { + if (fuzzy && round == 2) + fuzmatch_str_free(fuzmatch, count); return FAIL; + } if (!fuzzy) { diff --git a/src/fuzzy.c b/src/fuzzy.c index c1b216ce59..47407644eb 100644 --- a/src/fuzzy.c +++ b/src/fuzzy.c @@ -868,11 +868,10 @@ search_for_fuzzy_match( void fuzmatch_str_free(fuzmatch_str_T *fuzmatch, int count) { - int i; - if (fuzmatch == NULL) return; - for (i = 0; i < count; ++i) + + for (int i = 0; i < count; ++i) vim_free(fuzmatch[i].str); vim_free(fuzmatch); } @@ -892,7 +891,7 @@ fuzzymatches_to_strmatches( int i; if (count <= 0) - return OK; + goto theend; *matches = ALLOC_MULT(char_u *, count); if (*matches == NULL) @@ -909,8 +908,9 @@ fuzzymatches_to_strmatches( for (i = 0; i < count; i++) (*matches)[i] = fuzmatch[i].str; - vim_free(fuzmatch); +theend: + vim_free(fuzmatch); return OK; } diff --git a/src/version.c b/src/version.c index 2f6fbeb82b..4f6c708431 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1632, /**/ 1631, /**/