patch 9.1.1476: missing out-of-memory checks in cmdexpand.c

Commit: 
https://github.com/vim/vim/commit/1be5b375c4446976eb5a0a90d2cfa1d2d289a6ed
Author: John Marriott <basil...@internode.on.net>
Date:   Mon Jun 23 19:57:29 2025 +0200

    patch 9.1.1476: missing out-of-memory checks in cmdexpand.c
    
    Problem:  missing out-of-memory checks in cmdexpand.c
    Solution: add missing out-of-memory checks, re-order code
              (John Marriott)
    
    This commit does the following:
    - in cmdline_pum_create() add out-of-memory check call of ALLOC_MULT()
    - in expand_cmdline() move check for out-of-memory to cover both
      assignments of file_str
    - in nextwild() don't free `p2` until after it's last use.
    
    closes: #17592
    
    Signed-off-by: John Marriott <basil...@internode.on.net>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index a6d8c8539..4077fb341 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -335,7 +335,6 @@ nextwild(
            ccline->cmdpos += difflen;
        }
     }
-    vim_free(p2);
 
     redrawcmd();
     cursorcmd();
@@ -351,6 +350,8 @@ nextwild(
        // free expanded pattern
        (void)ExpandOne(xp, NULL, NULL, 0, WILD_FREE);
 
+    vim_free(p2);
+
     return OK;
 }
 
@@ -370,8 +371,11 @@ cmdline_pum_create(
     int                columns;
 
     // Add all the completion matches
+    compl_match_array = ALLOC_MULT(pumitem_T, numMatches);
+    if (compl_match_array == NULL)
+       return EXPAND_UNSUCCESSFUL;
+
     compl_match_arraysize = numMatches;
-    compl_match_array = ALLOC_MULT(pumitem_T, compl_match_arraysize);
     for (i = 0; i < numMatches; i++)
     {
        compl_match_array[i].pum_text = SHOW_MATCH(i);
@@ -2884,11 +2888,9 @@ expand_cmdline(
        // If fuzzy matching, don't modify the search string
        file_str = vim_strsave(xp->xp_pattern);
     else
-    {
        file_str = addstar(xp->xp_pattern, xp->xp_pattern_len, xp->xp_context);
-       if (file_str == NULL)
-           return EXPAND_UNSUCCESSFUL;
-    }
+    if (file_str == NULL)
+       return EXPAND_UNSUCCESSFUL;
 
     if (p_wic)
        options += WILD_ICASE;
diff --git a/src/version.c b/src/version.c
index f8dc4084b..df89e19d6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1476,
 /**/
     1475,
 /**/

-- 
-- 
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/E1uTlhD-00GSy9-4H%40256bit.org.

Raspunde prin e-mail lui