summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-01-02 21:04:04 +0000
committerBram Moolenaar <Bram@vim.org>2023-01-02 21:04:04 +0000
commite83c133eb900898c39e6935a5d569308ff882342 (patch)
tree7d93894d5da7b394070dcd6a83b6393e9b41e055
parent03ff0c66810492853291311e9e11a75b92cdcb8a (diff)
downloadvim-git-e83c133eb900898c39e6935a5d569308ff882342.tar.gz
patch 9.0.1136: memory leak when getting class member type from exprv9.0.1136
Problem: Memory leak when getting class member type from expr. Solution: Clear the expression result.
-rw-r--r--src/version.c2
-rw-r--r--src/vim9class.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/version.c b/src/version.c
index 72493e3c1..ab0c92317 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1136,
+/**/
1135,
/**/
1134,
diff --git a/src/vim9class.c b/src/vim9class.c
index e764f7088..2717a7905 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -99,8 +99,11 @@ parse_member(
int res = eval0(expr, &tv, eap, &evalarg);
if (res == OK)
+ {
type = typval2type(&tv, get_copyID(), type_list,
TVTT_DO_MEMBER);
+ clear_tv(&tv);
+ }
if (type == NULL)
{
semsg(_(e_cannot_get_object_member_type_from_initializer_str),