jdwije / qemacs

A fast and lightweight emacs.
GNU Lesser General Public License v2.1
15 stars 2 forks source link

find_file_open memory leak #12

Open jdwije opened 9 years ago

jdwije commented 9 years ago

find_file_open fn is leaking!

see this debug:

==19384== 3,088 bytes in 1 blocks are definitely lost in loss record 280 of 295
==19384==    at 0x66CB: malloc (in /usr/local/Cellar/valgrind/3.10.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==19384==    by 0x100012FE9: find_file_open (in /usr/local/bin/qe)
==19384==    by 0x10000CBF3: find_resource_file (in /usr/local/bin/qe)
==19384==    by 0x100011C33: load_input_methods (in /usr/local/bin/qe)
==19384==    by 0x10000D687: qe_init (in /usr/local/bin/qe)
==19384==    by 0x10001560C: url_main_loop (in /usr/local/bin/qe)
==19384==    by 0x10000DD4E: main (in /usr/local/bin/qe)
==19384== 
==19384== 3,088 bytes in 1 blocks are definitely lost in loss record 281 of 295
==19384==    at 0x66CB: malloc (in /usr/local/Cellar/valgrind/3.10.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==19384==    by 0x100012FE9: find_file_open (in /usr/local/bin/qe)
==19384==    by 0x10000CBF3: find_resource_file (in /usr/local/bin/qe)
==19384==    by 0x100012089: load_ligatures (in /usr/local/bin/qe)
==19384==    by 0x10000D68C: qe_init (in /usr/local/bin/qe)
==19384==    by 0x10001560C: url_main_loop (in /usr/local/bin/qe)
==19384==    by 0x10000DD4E: main (in /usr/local/bin/qe)
==19384== 
==19384== 3,088 bytes in 1 blocks are definitely lost in loss record 282 of 295
==19384==    at 0x66CB: malloc (in /usr/local/Cellar/valgrind/3.10.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==19384==    by 0x100012FE9: find_file_open (in /usr/local/bin/qe)
==19384==    by 0x10000D469: load_all_modules (in /usr/local/bin/qe)
==19384==    by 0x10000D912: qe_init (in /usr/local/bin/qe)
==19384==    by 0x10001560C: url_main_loop (in /usr/local/bin/qe)
==19384==    by 0x10000DD4E: main (in /usr/local/bin/qe)
==19384== 
==19384== 3,088 bytes in 1 blocks are definitely lost in loss record 283 of 295
==19384==    at 0x66CB: malloc (in /usr/local/Cellar/valgrind/3.10.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==19384==    by 0x100012FE9: find_file_open (in /usr/local/bin/qe)
==19384==    by 0x10000D36B: parse_config (in /usr/local/bin/qe)
==19384==    by 0x10000DB86: qe_init (in /usr/local/bin/qe)
==19384==    by 0x10001560C: url_main_loop (in /usr/local/bin/qe)
==19384==    by 0x10000DD4E: main (in /usr/local/bin/qe)
jdwije commented 9 years ago

it seems find_file_close was not calling free!


void find_file_close(FindFileState *s)
{
    if (s->dir) 
        closedir(s->dir);
    free(s);
}

it's been updated but still needs testing.