changeset 31586:f36f920bad1a v9.0.1125

patch 9.0.1125: memory leak when using class functions Commit: https://github.com/vim/vim/commit/ec8b74f7ab37ac83045c9eba723daf3ff8d62fc2 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 1 14:11:27 2023 +0000 patch 9.0.1125: memory leak when using class functions Problem: Memory leak when using class functions. Solution: Clear and free the array with class functions.
author Bram Moolenaar <Bram@vim.org>
date Sun, 01 Jan 2023 15:15:04 +0100
parents d85a9fa468f2
children 40f9cc5fc462
files src/version.c src/vim9class.c
diffstat 2 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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 */
 /**/
+    1125,
+/**/
     1124,
 /**/
     1123,
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -975,6 +975,13 @@ class_unref(class_T *cl)
 	}
 	vim_free(cl->class_obj_members);
 
+	for (int i = 0; i < cl->class_class_function_count; ++i)
+	{
+	    ufunc_T *uf = cl->class_class_functions[i];
+	    func_clear_free(uf, FALSE);
+	}
+	vim_free(cl->class_class_functions);
+
 	for (int i = 0; i < cl->class_obj_method_count; ++i)
 	{
 	    ufunc_T *uf = cl->class_obj_methods[i];