From 87e8271068ea3bccf1daf4e7e4b3667379c054bf Mon Sep 17 00:00:00 2001 From: navewindre Date: Tue, 12 Nov 2024 11:27:15 +0100 Subject: fix list access crash --- openbox/client.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 3ff278ae..85aaf6e4 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2702,9 +2702,10 @@ static void client_calc_layer_internal(ObClient *self) void client_calc_layer(ObClient *self) { GList *it; + GList *list = g_list_copy(stacking_list); /* skip over stuff above fullscreen layer */ - for (it = stacking_list; it; it = g_list_next(it)) + for (it = list; it; it = g_list_next(it)) if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break; /* find the windows in the fullscreen layer, and mark them not-visited */ @@ -2717,7 +2718,7 @@ void client_calc_layer(ObClient *self) client_calc_layer_internal(self); /* skip over stuff above fullscreen layer */ - for (it = stacking_list; it; it = g_list_next(it)) + for (it = list; it; it = g_list_next(it)) if (window_layer(it->data) <= OB_STACKING_LAYER_FULLSCREEN) break; /* now recalc any windows in the fullscreen layer which have not @@ -2728,6 +2729,8 @@ void client_calc_layer(ObClient *self) !WINDOW_AS_CLIENT(it->data)->visited) client_calc_layer_internal(it->data); } + + g_list_free(list); } gboolean client_should_show(ObClient *self) -- cgit v1.2.3