From dc75a204f187176cec038a274e7920837029a56b Mon Sep 17 00:00:00 2001 From: Lidong Yan <502024330056@smail.nju.edu.cn> Date: Sun, 12 Oct 2025 15:05:11 +0000 Subject: [PATCH] patch 9.1.1851: memory leak in heredoc_get() Problem: memory leak in heredoc_get() Solution: Free "str" if list_append_string() fails (Lidong Yan). In heredoc_get(), eval_all_expr_in_str() allocates a new string and assign it to local variable "str". When list_append_string() failed the memory pointed to by "str" leaks. Free "str" if list_append_string() failed. related: #18533 Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Christian Brabandt --- src/evalvars.c | 4 ++++ src/version.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/evalvars.c b/src/evalvars.c index e529758ef3..c840d872bd 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -968,7 +968,11 @@ heredoc_get(exarg_T *eap, char_u *cmd, int script_get, int vim9compile) } if (list_append_string(l, str, -1) == FAIL) + { + if (free_str) + vim_free(str); break; + } if (free_str) vim_free(str); } diff --git a/src/version.c b/src/version.c index 3f6baf6bb2..d46906ab27 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1851, /**/ 1850, /**/