Skip to content

Commit 5deb762

Browse files
committed
Imageio: do not forget to gui_cleanup() before unloading storage/format
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)
1 parent 096731f commit 5deb762

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/common/imageio_module.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ void dt_imageio_cleanup(dt_imageio_t *iio)
326326
while(iio->plugins_format)
327327
{
328328
dt_imageio_module_format_t *module = (dt_imageio_module_format_t *)(iio->plugins_format->data);
329+
module->gui_cleanup(module);
329330
module->cleanup(module);
330331
if(module->widget) g_object_unref(module->widget);
331332
if(module->module) g_module_close(module->module);
@@ -335,6 +336,7 @@ void dt_imageio_cleanup(dt_imageio_t *iio)
335336
while(iio->plugins_storage)
336337
{
337338
dt_imageio_module_storage_t *module = (dt_imageio_module_storage_t *)(iio->plugins_storage->data);
339+
module->gui_cleanup(module);
338340
if(module->widget) g_object_unref(module->widget);
339341
if(module->module) g_module_close(module->module);
340342
free(module);

0 commit comments

Comments
 (0)