From 2adc60fa6fb747e19829294e2d16317297ae9cb3 Mon Sep 17 00:00:00 2001 From: Hanno Schwalm Date: Sun, 19 Jul 2026 23:43:32 +0200 Subject: [PATCH 1/2] Restore empty tmp cursor to parent window cursor If we had an undefined cursor when setting a temp cursor (cursor from parent window) we have to restore to parent window cursor when clearing the temp cursor. --- src/control/control.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/control/control.c b/src/control/control.c index 0016da147d4e..544fe045d202 100644 --- a/src/control/control.c +++ b/src/control/control.c @@ -324,7 +324,12 @@ void dt_control_set_temp_cursor(const char *cursor_name) void dt_control_clear_temp_cursor() { GdkWindow *window = gtk_widget_get_window(dt_ui_main_window(darktable.gui->ui)); - if(!_prev_cursor) return; + if(!_prev_cursor) + { + if(window) + gdk_window_set_cursor(window, NULL); + return; + } if(window) gdk_window_set_cursor(window, _prev_cursor); g_object_unref(_prev_cursor); From 4c2ff1a12e0134a320857cb65b384bd14b4c0e59 Mon Sep 17 00:00:00 2001 From: Hanno Schwalm Date: Mon, 20 Jul 2026 00:31:28 +0200 Subject: [PATCH 2/2] Don't double free module memory if loading failed If loading a module in dt_dev_module_duplicate_ext() failed we don't have to free memory as that has already been done inside dt_iop_load_module() --- src/develop/develop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/develop/develop.c b/src/develop/develop.c index 89296ba62fcb..27390197f503 100644 --- a/src/develop/develop.c +++ b/src/develop/develop.c @@ -3526,7 +3526,7 @@ dt_iop_module_t *dt_dev_module_duplicate_ext(dt_develop_t *dev, dt_iop_module_t *module = calloc(1, sizeof(dt_iop_module_t)); if(dt_iop_load_module(module, base->so, base->dev)) { - free(module); + // failed module already freed while failing to load return NULL; } module->instance = base->instance;