Skip to content

Commit

Permalink
Imageio: do not forget to gui_cleanup() before unloading storage/format
Browse files Browse the repository at this point in the history
Probably, this is a regression since cd3ee07

Fixes ~20 LeakSanitizer-detected leaks like:
Direct leak of 88 byte(s) in 1 object(s) allocated from:
    #0 0x7f7afad8c895 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54895)
    #1 0x7f7ad6a500ec (+0x5620ec)
    #2 0x7f7afa94e505 in dt_imageio_load_modules_format /home/lebedevri/darktable/src/common/imageio_module.c:173
    #3 0x7f7afa950a0d in dt_imageio_init /home/lebedevri/darktable/src/common/imageio_module.c:320
    #4 0x7f7afa8f687f in dt_init /home/lebedevri/darktable/src/common/darktable.c:875
    #5 0x400cb8 in main /home/lebedevri/darktable/src/main.c:24
    #6 0x7f7af3161b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)

Direct leak of 304 byte(s) in 3 object(s) allocated from:
    #0 0x7f7afad8c895 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54895)
    #1 0x7f7af837f7f1 in g_malloc0 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4f7f1)
    #2 0x7f7afa9508e3 in dt_imageio_load_modules_storage /home/lebedevri/darktable/src/common/imageio_module.c:306
    #3 0x7f7afa950a15 in dt_imageio_init /home/lebedevri/darktable/src/common/imageio_module.c:321
    #4 0x7f7afa8f687f in dt_init /home/lebedevri/darktable/src/common/darktable.c:875
    #5 0x400cb8 in main /home/lebedevri/darktable/src/main.c:24
    #6 0x7f7af3161b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44)
  • Loading branch information
LebedevRI committed May 23, 2015
1 parent 096731f commit 5deb762
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/common/imageio_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,7 @@ void dt_imageio_cleanup(dt_imageio_t *iio)
while(iio->plugins_format)
{
dt_imageio_module_format_t *module = (dt_imageio_module_format_t *)(iio->plugins_format->data);
module->gui_cleanup(module);
module->cleanup(module);
if(module->widget) g_object_unref(module->widget);
if(module->module) g_module_close(module->module);
Expand All @@ -335,6 +336,7 @@ void dt_imageio_cleanup(dt_imageio_t *iio)
while(iio->plugins_storage)
{
dt_imageio_module_storage_t *module = (dt_imageio_module_storage_t *)(iio->plugins_storage->data);
module->gui_cleanup(module);
if(module->widget) g_object_unref(module->widget);
if(module->module) g_module_close(module->module);
free(module);
Expand Down

0 comments on commit 5deb762

Please sign in to comment.