Fix thinko in if.c, *o in Stop can never be pointing at the right place.
authorMikael Magnusson <mikachu@gmail.com>
Thu, 24 Apr 2014 22:22:59 +0000 (00:22 +0200)
committerMikael Magnusson <mikachu@gmail.com>
Thu, 24 Apr 2014 22:27:06 +0000 (00:27 +0200)
Use a file static boolean instead.

openbox/actions/if.c

index fd8e1bd..a9c4094 100644 (file)
@@ -79,10 +79,9 @@ typedef struct {
 } Query;
 
 typedef struct {
 } Query;
 
 typedef struct {
-    GArrayqueries;
+    GArray *queries;
     GSList *thenacts;
     GSList *elseacts;
     GSList *thenacts;
     GSList *elseacts;
-    gboolean stop;
 } Options;
 
 static gpointer setup_func(xmlNodePtr node);
 } Options;
 
 static gpointer setup_func(xmlNodePtr node);
@@ -91,6 +90,8 @@ static gboolean run_func_if(ObActionsData *data, gpointer options);
 static gboolean run_func_stop(ObActionsData *data, gpointer options);
 static gboolean run_func_foreach(ObActionsData *data, gpointer options);
 
 static gboolean run_func_stop(ObActionsData *data, gpointer options);
 static gboolean run_func_foreach(ObActionsData *data, gpointer options);
 
+static gboolean foreach_stop;
+
 void action_if_startup(void)
 {
     actions_register("If", setup_func, free_func, run_func_if);
 void action_if_startup(void)
 {
     actions_register("If", setup_func, free_func, run_func_if);
@@ -430,14 +431,14 @@ static gboolean run_func_if(ObActionsData *data, gpointer options)
 static gboolean run_func_foreach(ObActionsData *data, gpointer options)
 {
     GList *it;
 static gboolean run_func_foreach(ObActionsData *data, gpointer options)
 {
     GList *it;
-    Options *o = options;
 
 
-    o->stop = FALSE;
+    foreach_stop = FALSE;
 
     for (it = client_list; it; it = g_list_next(it)) {
         data->client = it->data;
         run_func_if(data, options);
 
     for (it = client_list; it; it = g_list_next(it)) {
         data->client = it->data;
         run_func_if(data, options);
-        if (o->stop) {
+        if (foreach_stop) {
+            foreach_stop = FALSE;
             break;
         }
     }
             break;
         }
     }
@@ -447,11 +448,9 @@ static gboolean run_func_foreach(ObActionsData *data, gpointer options)
 
 static gboolean run_func_stop(ObActionsData *data, gpointer options)
 {
 
 static gboolean run_func_stop(ObActionsData *data, gpointer options)
 {
-    Options *o = options;
-
     /* This stops the loop above so we don't invoke actions on any more
        clients */
     /* This stops the loop above so we don't invoke actions on any more
        clients */
-    o->stop = TRUE;
+    foreach_stop = TRUE;
 
     /* TRUE causes actions_run_acts to not run further actions on the current
        client */
 
     /* TRUE causes actions_run_acts to not run further actions on the current
        client */