Hi Command custom completion (:help :command-completion-customlist) is leaking memory when redefining completion for a command multiple times. I see this bug in latest Vim-7.2.132.
The following script illustrates the problem: memory usage keeps growing at each iteration when redefining a command completion: :function! s:Foo() :endfunction :function! s:CompleteFoo(a, l, p) :endfunction :while 1 : " Leak at each iteration : command! -complete=customlist,s:CompleteFoo -nargs=1 Foo :call s:Foo() :endwhile Attached patch fixes the memory leak. Regards -- Dominique --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
Index: ex_docmd.c =================================================================== RCS file: /cvsroot/vim/vim7/src/ex_docmd.c,v retrieving revision 1.166 diff -c -r1.166 ex_docmd.c *** ex_docmd.c 1 Mar 2009 01:45:15 -0000 1.166 --- ex_docmd.c 10 Mar 2009 19:24:08 -0000 *************** *** 5148,5153 **** --- 5148,5157 ---- cmd->uc_name = p; } + #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) + else + vim_free(cmd->uc_compl_arg); /* free previous compl. arg if any */ + #endif cmd->uc_rep = rep_buf; cmd->uc_argt = argt; *************** *** 5941,5947 **** for (;;) { p = cmd->uc_rep; /* source */ ! q = buf; /* destinateion */ totlen = 0; for (;;) --- 5945,5951 ---- for (;;) { p = cmd->uc_rep; /* source */ ! q = buf; /* destination */ totlen = 0; for (;;)