Mercurial > vim
comparison src/userfunc.c @ 21566:1e3e5058041c v8.2.1333
patch 8.2.1333: Vim9: memory leak when using nested global function
Commit: https://github.com/vim/vim/commit/af8edbb8dc551aaf2105a4d77b3d8495da239ef0
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Aug 1 00:03:09 2020 +0200
patch 8.2.1333: Vim9: memory leak when using nested global function
Problem: Vim9: memory leak when using nested global function.
Solution: Swap from and to when copying the lines.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 01 Aug 2020 00:15:04 +0200 |
parents | 30a997217524 |
children | 5470c36ed7e6 |
comparison
equal
deleted
inserted
replaced
21565:a0fbaf68d30e | 21566:1e3e5058041c |
---|---|
1186 | 1186 |
1187 fp->uf_varargs = ufunc->uf_varargs; | 1187 fp->uf_varargs = ufunc->uf_varargs; |
1188 fp->uf_flags = (ufunc->uf_flags & ~FC_VIM9) | FC_COPY; | 1188 fp->uf_flags = (ufunc->uf_flags & ~FC_VIM9) | FC_COPY; |
1189 fp->uf_def_status = ufunc->uf_def_status; | 1189 fp->uf_def_status = ufunc->uf_def_status; |
1190 fp->uf_dfunc_idx = ufunc->uf_dfunc_idx; | 1190 fp->uf_dfunc_idx = ufunc->uf_dfunc_idx; |
1191 if (ga_copy_strings(&fp->uf_args, &ufunc->uf_args) == FAIL | 1191 if (ga_copy_strings(&ufunc->uf_args, &fp->uf_args) == FAIL |
1192 || ga_copy_strings(&fp->uf_def_args, &ufunc->uf_def_args) | 1192 || ga_copy_strings(&ufunc->uf_def_args, &fp->uf_def_args) |
1193 == FAIL | 1193 == FAIL |
1194 || ga_copy_strings(&fp->uf_lines, &ufunc->uf_lines) == FAIL) | 1194 || ga_copy_strings(&ufunc->uf_lines, &fp->uf_lines) == FAIL) |
1195 goto failed; | 1195 goto failed; |
1196 | 1196 |
1197 fp->uf_name_exp = ufunc->uf_name_exp == NULL ? NULL | 1197 fp->uf_name_exp = ufunc->uf_name_exp == NULL ? NULL |
1198 : vim_strsave(ufunc->uf_name_exp); | 1198 : vim_strsave(ufunc->uf_name_exp); |
1199 if (ufunc->uf_arg_types != NULL) | 1199 if (ufunc->uf_arg_types != NULL) |