Mercurial > vim
changeset 21218:1f4d0375f947 v8.2.1160
patch 8.2.1160: Vim9: memory leak in allocated types
Commit: https://github.com/vim/vim/commit/6110e79a5872dd6c5529f909d1bd670e3325927b
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 8 19:35:21 2020 +0200
patch 8.2.1160: Vim9: memory leak in allocated types
Problem: Vim9: memory leak in allocated types.
Solution: Free the type pointers.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 08 Jul 2020 19:45:04 +0200 |
parents | d9d839c4d070 |
children | 8ad4d2754054 |
files | src/proto/vim9compile.pro src/userfunc.c src/version.c src/vim9compile.c src/vim9script.c |
diffstat | 5 files changed, 13 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/proto/vim9compile.pro +++ b/src/proto/vim9compile.pro @@ -1,5 +1,6 @@ /* vim9compile.c */ int check_defined(char_u *p, size_t len, cctx_T *cctx); +void clear_type_list(garray_T *gap); type_T *typval2type(typval_T *tv); int check_type(type_T *expected, type_T *actual, int give_msg); char_u *skip_type(char_u *start);
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -1069,10 +1069,7 @@ func_clear_items(ufunc_T *fp) VIM_CLEAR(fp->uf_arg_types); VIM_CLEAR(fp->uf_def_arg_idx); VIM_CLEAR(fp->uf_va_name); - while (fp->uf_type_list.ga_len > 0) - vim_free(((type_T **)fp->uf_type_list.ga_data) - [--fp->uf_type_list.ga_len]); - ga_clear(&fp->uf_type_list); + clear_type_list(&fp->uf_type_list); #ifdef FEAT_LUA if (fp->uf_cb_free != NULL)
--- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1160, +/**/ 1159, /**/ 1158,
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -321,6 +321,14 @@ alloc_type(garray_T *type_gap) return type; } + void +clear_type_list(garray_T *gap) +{ + while (gap->ga_len > 0) + vim_free(((type_T **)gap->ga_data)[--gap->ga_len]); + ga_clear(gap); +} + static type_T * get_list_type(type_T *member_type, garray_T *type_gap) {