patch 9.1.1632: memory leak in fuzzy.c

Commit: 
https://github.com/vim/vim/commit/03d6e06edd0aaf2f591d74349cb25dbeca5895ef
Author: glepnir <glephun...@gmail.com>
Date:   Thu Aug 14 21:15:44 2025 +0200

    patch 9.1.1632: memory leak in fuzzy.c
    
    Problem:  memory leak in fuzzy.c
    Solution: Free fuzmatch, add a few minor refactors
              (glepnir)
    
    fixes neovim CID 584055: fuzmatch leak when count becomes 0
    Fix partial allocation failure cleanup in buffer expansion
    
    closes: #17996
    
    Signed-off-by: glepnir <glephun...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/buffer.c b/src/buffer.c
index 1ca561fce..5937a9e12 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 c1b216ce5..47407644e 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 2f6fbeb82..4f6c70843 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,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1umdeG-00F1G5-19%40256bit.org.

Raspunde prin e-mail lui