Skip to content

Commit ce09fdd

Browse files
LebedevRIpmjdebruijn
authored andcommitted
dt_ctl_set_display_profile(): free icc buffer we just got if profile has not changed
Fixes following LeakSanitizer-detected leak: Direct leak of 1548384 byte(s) in 3 object(s) allocated from: #0 0x7f913367474f in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5474f) #1 0x7f9130c67799 in g_malloc (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4f799) #2 0x7f91325abb85 (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0+0x53b85) #3 0x7f9133274b15 in dt_ctl_set_display_profile /home/lebedevri/darktable/src/control/control.c:199 #4 0x7f9133391d6e in window_configure /home/lebedevri/darktable/src/gui/gtk.c:625 #5 0x7f9132a0531c (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x1ed31c) #6 0x7f9130f382d4 in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x102d4) #7 0x7f9130f4a03b (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2203b) #8 0x7f9130f521a4 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a1a4) #9 0x7f9130f528fe in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a8fe) #10 0x7f9132b35de3 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x31dde3) #11 0x7f9132a04819 in gtk_main_do_event (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x1ec819) #12 0x7f91325a7b11 (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0+0x4fb11) #13 0x7f9130c61c3c in g_main_context_dispatch (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x49c3c) #14 0x7f9130c61f1f (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x49f1f) #15 0x7f9130c62241 in g_main_loop_run (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a241) #16 0x7f9132a03bf4 in gtk_main (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x1ebbf4) #17 0x7f913339d36b in dt_gui_gtk_run /home/lebedevri/darktable/src/gui/gtk.c:964 #18 0x400cf3 in main /home/lebedevri/darktable/src/main.c:25 #19 0x7f912ba49b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44) #20 0x400bd8 (/usr/local/bin/darktable+0x400bd8) (cherry picked from commit 5cf182b)
1 parent 872761a commit ce09fdd

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/control/control.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ void dt_ctl_set_display_profile()
281281
dt_print(DT_DEBUG_CONTROL, "[color profile] we got a new screen profile `%s' from the %s (size: %d)\n",
282282
*name ? name : "(unknown)", profile_source, buffer_size);
283283
}
284+
else
285+
{
286+
g_free(buffer);
287+
}
284288
pthread_rwlock_unlock(&darktable.control->xprofile_lock);
285289
if(profile_changed) dt_control_signal_raise(darktable.signals, DT_SIGNAL_CONTROL_PROFILE_CHANGED);
286290
g_free(profile_source);

0 commit comments

Comments
 (0)