Commit: patch 9.2.0779: Memory leak in type_name_func() on alloc failure

0 views
Skip to first unread message

Christian Brabandt

unread,
Jul 2, 2026, 4:15:28 PM (8 hours ago) Jul 2
to vim...@googlegroups.com
patch 9.2.0779: Memory leak in type_name_func() on alloc failure

Commit: https://github.com/vim/vim/commit/eeeed2b294da499e63e331f40302ffe9dbf96baa
Author: Christian Brabandt <c...@256bit.org>
Date: Thu Jul 2 20:01:50 2026 +0000

patch 9.2.0779: Memory leak in type_name_func() on alloc failure

Problem: Memory leak in type_name_func() on alloc failure (Ao Xijie)
Solution: Free ret_free variable on failure

related: #20668

Supported by AI.

Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/version.c b/src/version.c
index 05249bea7..1d6c351a7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 779,
/**/
778,
/**/
diff --git a/src/vim9type.c b/src/vim9type.c
index ab34d2535..dfa6686a9 100644
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -2722,13 +2722,16 @@ type_name_func(type_T *type, char **tofree)
STRCPY((char *)ga.ga_data + ga.ga_len, ")");
else
{
- char *ret_free;
+ char *ret_free = NULL;
char *ret_name = type_name(type->tt_member, &ret_free);
int len;

len = (int)STRLEN(ret_name) + 4;
if (ga_grow(&ga, len) == FAIL)
+ {
+ vim_free(ret_free);
goto failed;
+ }
STRCPY((char *)ga.ga_data + ga.ga_len, "): ");
STRCPY((char *)ga.ga_data + ga.ga_len + 3, ret_name);
vim_free(ret_free);
Reply all
Reply to author
Forward
0 new messages