From c7c10f8c116a87b49ef3ddb9a3b78f10375ca564 Mon Sep 17 00:00:00 2001 From: glepnir Date: Mon, 18 Aug 2025 21:09:18 +0200 Subject: [PATCH] patch 9.1.1649: attrs allocation and fuzzy growarray could leak Problem: attrs allocation and fuzzy growarray could leak on early returns Solution: Ensure proper cleanup of allocated memory on exit paths (glepnir) closes: #18038 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/popupmenu.c | 10 ++++++++-- src/version.c | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/popupmenu.c b/src/popupmenu.c index 9456faae3f..59966ea79d 100644 --- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -51,14 +51,13 @@ static int pum_set_selected(int n, int repeat); static void pum_compute_size(void) { - int i; int w; // Compute the width of the widest match and the widest extra. pum_base_width = 0; pum_kind_width = 0; pum_extra_width = 0; - for (i = 0; i < pum_size; ++i) + for (int i = 0; i < pum_size; ++i) { if (pum_array[i].pum_text != NULL) { @@ -454,7 +453,14 @@ pum_compute_text_attrs(char_u *text, hlf_T hlf, int user_hlattr) leader_len = STRLEN(leader); if (in_fuzzy) + { ga = fuzzy_match_str_with_pos(text, leader); + if (!ga) + { + vim_free(attrs); + return NULL; + } + } while (*ptr != NUL) { diff --git a/src/version.c b/src/version.c index 903c0960d7..8f351ed07d 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 */ +/**/ + 1649, /**/ 1648, /**/