diff --git a/dwl.c b/dwl.c index 63996a2..a2418d0 100644 --- a/dwl.c +++ b/dwl.c @@ -792,6 +792,7 @@ cleanup(void) destroykeyboardgroup(&kb_group->destroy, NULL); input_method_relay_finish(input_method_relay); + input_method_relay = NULL; /* If it's not destroyed manually, it will cause a use-after-free of wlr_seat. * Destroy it until it's fixed on the wlroots side */ diff --git a/ime.h b/ime.h index f537a2d..b9591f5 100644 --- a/ime.h +++ b/ime.h @@ -625,7 +625,7 @@ void input_method_relay_set_focus(struct input_method_relay *relay, struct wlr_surface *surface) { - if (relay->focused_surface == surface) + if (!relay || relay->focused_surface == surface) return; if (relay->focused_surface)