mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-06 05:47:13 +02:00
40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
Patch-Source: http://git.openbox.org/?p=mikachu/openbox.git;a=commit;h=d41128e5a1002af41c976c8860f8299cfcd3cd72
|
|
From: pldubouilh <pldubouilh@gmail.com>
|
|
Subject: [PATCH] Fix list traversal issue in client_calc_layer.
|
|
---
|
|
|
|
--- a/openbox/client.c
|
|
+++ b/openbox/client.c
|
|
@@ -2702,9 +2702,12 @@ static void client_calc_layer_internal(O
|
|
void client_calc_layer(ObClient *self)
|
|
{
|
|
GList *it;
|
|
+ /* the client_calc_layer_internal calls below modify stacking_list,
|
|
+ so we have to make a copy to iterate over */
|
|
+ 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 +2720,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 +2731,8 @@ void client_calc_layer(ObClient *self)
|
|
!WINDOW_AS_CLIENT(it->data)->visited)
|
|
client_calc_layer_internal(it->data);
|
|
}
|
|
+
|
|
+ g_list_free(it);
|
|
}
|
|
|
|
gboolean client_should_show(ObClient *self)
|