patch 9.1.1331: Leaking memory with cmdcomplete()
Problem: Leaking memory with cmdcomplete()
(zeertzjq, after v9.1.1329)
Solution: free the memory (Girish Palya)
closes: #17190
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 70f3c88..0a1c3b1 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2025 Apr 21
+*builtin.txt* For Vim version 9.1. Last change: 2025 Apr 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1834,7 +1834,7 @@
Return type: |Number|
-cmdcomplete_info([{what}]) *cmdcomplete_info()*
+cmdcomplete_info() *cmdcomplete_info()*
Returns a |Dictionary| with information about cmdline
completion. See |cmdline-completion|.
The items are:
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 45f69bb..5b87d78 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1244,7 +1244,10 @@
// Save cmdline before expansion
if (ccline->cmdbuff != NULL)
+ {
+ vim_free(cmdline_orig);
cmdline_orig = vim_strnsave(ccline->cmdbuff, ccline->cmdlen);
+ }
if (xp->xp_numfiles == -1)
{
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 1137708..8445236 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1916,8 +1916,7 @@
}
// Trigger CmdlineLeavePre autocommand
- if (ccline.cmdfirstc != NUL && (c == '\n' || c == '\r' || c == K_KENTER
- || c == ESC || c == Ctrl_C))
+ if (c == '\n' || c == '\r' || c == K_KENTER || c == ESC || c == Ctrl_C)
trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINELEAVEPRE);
// The wildmenu is cleared if the pressed key is not used for
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index ae58711..6f83b9c 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -2038,6 +2038,12 @@
call assert_equal('', g:log)
call feedkeys(":echo hello", "tx")
call assert_equal('CmdlineLeavePre', g:log)
+ let g:count = 0
+ autocmd CmdlineLeavePre * let g:count += 1
+ call feedkeys(":let c = input('? ')\<cr>B\<cr>", "tx")
+ call assert_equal(2, g:count)
+ unlet! g:count
+ unlet! g:log
bw!
endfunc
diff --git a/src/version.c b/src/version.c
index 048788e..2209282 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1331,
+/**/
1330,
/**/
1329,