Dominique Pelle wrote:

> I notice a memory leak in Vim-7.2.233 (and older) whenever I do:
> 
>   :set term=builtin_dumb
> 
> If you execute above command n times, it will leak n blocks of memory.
> 
> Memory is allocated here:
> 
> ==13315== 10 bytes in 2 blocks are definitely lost in loss record 127 of 162
> ==13315==    at 0x402603E: malloc (vg_replace_malloc.c:207)
> ==13315==    by 0x812F556: lalloc (misc2.c:866)
> ==13315==    by 0x812F461: alloc (misc2.c:765)
> ==13315==    by 0x812F96A: vim_strsave (misc2.c:1177)
> ==13315==    by 0x815A459: set_string_option_direct (option.c:5353)
> ==13315==    by 0x81CA9B1: set_color_count (term.c:1565)
> ==13315==    by 0x81CAD91: set_termname (term.c:1740)
> ==13315==    by 0x815A843: did_set_string_option (option.c:5497)
> ==13315==    by 0x81593CE: do_set (option.c:4678)
> ==13315==    by 0x80CED24: ex_set (ex_docmd.c:10983)
> ==13315==    by 0x80C1F94: do_one_cmd (ex_docmd.c:2627)
> ==13315==    by 0x80BF7CB: do_cmdline (ex_docmd.c:1096)
> ==13315==    by 0x81457EA: nv_colon (normal.c:5224)
> ==13315==    by 0x813F03E: normal_cmd (normal.c:1188)
> ==13315==    by 0x8101DB5: main_loop (main.c:1186)
> ==13315==    by 0x8101902: main (main.c:942)
> 
> option.c:
> 
> 5353  s = vim_strsave(val);
> 5354  if (s != NULL)
> 5355  {
> 5356      varp = (char_u **)get_varp_scope(&(options[idx]),
> 5357                                             both ? OPT_LOCAL : 
> opt_flags);
> 5358      if ((opt_flags & OPT_FREE) && (options[idx].flags & P_ALLOCED))
> 5359          free_string_option(*varp);
> 5360      *varp = s;
> 
> 
> Chasing with gdb, I found that the leak happens shortly later
> in term.c in ttest():
> 
> 2882   /* if 'Sb' and 'AB' are not defined, reset "Co" */
> 2883   if (*T_CSB == NUL && *T_CAB == NUL)
> 2884      T_CCO = empty_option;  <---------------- LEAK!
> 
> Line 2884 replaces T_CCO, which had been previously dynamically
> allocated in option.c:5353, by empty_option.  T_CCO should be freed
> before being replaced (I assume T_CCO is always dynamically allocated
> if it was not empty_option).
> 
> Attached patch fixes it.

Thanks!

-- 
>From "know your smileys":
 :-)-O  Smiling doctor with stethoscope

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui