On Thu, May 07, 2009 at 09:08:42PM -0000, Usamah Malik wrote:
We'd been finding memory leaks (via valgrind) in ncurses. This happens
when ncurses is being used from tecla library. The stack is below:
==5125== 46,254 (2,236 direct, 44,018 indirect) bytes in 13 blocks are
definitely lost in loss record 43 of 45
==5125== at 0x400497E: calloc (vg_replace_malloc.c:397)
==5125== by 0x5386C86: _nc_setupterm (in /usr/lib/libncurses.so.5.7)
==5125== by 0x53871E2: setupterm (in /usr/lib/libncurses.so.5.7)
==5125== by 0x825596E: _gl_change_terminal (in .........)
ncurse version: 5.7
platform: linux x86
On deeper analysis of setupterm we found a global variable being
assigned
chunks of memory at every setupterm call. Applying the following diff to
lib_setup.c seems to fix it:
-------
diff ./ncurses/tinfo/lib_setup_old.c ./ncurses/tinfo/lib_setup.c
587,589c587
< TERMINAL *oldterm = set_curterm(termp);
<
< del_curterm(oldterm);
this chunk doesn't appear in ncurses...
---
set_curterm(termp);
this chunk does...
(but your diff suggests that the first chunk is in ncurses, and that
you want to use the second)