From 467f3014fb0a4a0982054346babe14fa5f4fe5e7 Mon Sep 17 00:00:00 2001 From: bbb651 Date: Sat, 22 Mar 2025 15:31:12 +0200 Subject: [PATCH] Fix surface data unwrap crash in pending activations handling Fixes #127. --- src/server/mod.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/server/mod.rs b/src/server/mod.rs index b0e0150..780890f 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -1043,12 +1043,15 @@ impl ServerState { let globals = &mut self.clientside.globals; globals.pending_activations.retain(|(window, token)| { - if let Some(window) = self.windows.get(window) { - if let Some(key) = window.surface_key { - let surface: &SurfaceData = self.objects[key].as_ref(); - activation_state.activate::(&surface.client, token.clone()); - return false; - } + if let Some(surface) = self + .windows + .get(window) + .and_then(|window| window.surface_key) + .and_then(|key| self.objects.get(key)) + .map(AsRef::::as_ref) + { + activation_state.activate::(&surface.client, token.clone()); + return false; } true });