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
-~----------~----~----~----~------~----~------~--~---