Mercurial > vim
changeset 30443:54e36d01847b v9.0.0557
patch 9.0.0557: valgrind reports possibly leaked memory
Commit: https://github.com/vim/vim/commit/259a741044812df739457e25eb5195d9c5c0e6f8
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Sep 23 16:11:37 2022 +0100
patch 9.0.0557: valgrind reports possibly leaked memory
Problem: Valgrind reports possibly leaked memory.
Solution: Move the problematic test function to the "fails" test file to
avoid obscuring real memory leaks.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 23 Sep 2022 17:15:05 +0200 |
parents | a357f581ca7b |
children | 2136cce5f5fa |
files | src/testdir/test_vim9_fails.vim src/testdir/test_vim9_func.vim src/version.c |
diffstat | 3 files changed, 36 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_vim9_fails.vim +++ b/src/testdir/test_vim9_fails.vim @@ -26,3 +26,37 @@ def Test_job_info_return_type() endif enddef +" Using "idx" from a legacy global function does not work. +" This caused a crash when called from legacy context. +" This creates a dict that contains a partial that refers to the dict, causing +" valgrind to report "possibly leaked memory". +func Test_partial_call_fails() + let lines =<< trim END + vim9script + + var l = ['a', 'b', 'c'] + def Iter(container: any): any + var idx = -1 + var obj = {state: container} + def g:NextItem__(self: dict<any>): any + ++idx + return self.state[idx] + enddef + obj.__next__ = function('g:NextItem__', [obj]) + return obj + enddef + + var it = Iter(l) + echo it.__next__() + END + call writefile(lines, 'XpartialCall', 'D') + let caught = 'no' + try + source XpartialCall + catch /E1248:/ + let caught = 'yes' + endtry + call assert_equal('yes', caught) + delfunc g:NextItem__ +endfunc +
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -3532,34 +3532,6 @@ def Test_partial_null_function() v9.CheckDefAndScriptSuccess(lines) enddef -" Using "idx" from a legacy global function does not work. -" This caused a crash when called from legacy context. -func Test_partial_call_fails() - let lines =<< trim END - vim9script - - var l = ['a', 'b', 'c'] - def Iter(container: any): any - var idx = -1 - var obj = {state: container} - def g:NextItem__(self: dict<any>): any - ++idx - return self.state[idx] - enddef - obj.__next__ = function('g:NextItem__', [obj]) - return obj - enddef - - var it = Iter(l) - echo it.__next__() - END - call writefile(lines, 'XpartialCall', 'D') - try - source XpartialCall - catch /E1248:/ - endtry -endfunc - def Test_cmd_modifier() tab echo '0' v9.CheckDefFailure(['5tab echo 3'], 'E16:')