Fix thinko in if.c, *o in Stop can never be pointing at the right place.

Use a file static boolean instead.
This commit is contained in:
Mikael Magnusson 2014-04-25 00:22:59 +02:00
parent d8f1ef057b
commit 1ea131048d

View file

@ -79,10 +79,9 @@ typedef struct {
} Query;
typedef struct {
GArray* queries;
GArray *queries;
GSList *thenacts;
GSList *elseacts;
gboolean stop;
} 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 foreach_stop;
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;
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);
if (o->stop) {
if (foreach_stop) {
foreach_stop = FALSE;
break;
}
}
@ -447,11 +448,9 @@ static gboolean run_func_foreach(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 */
o->stop = TRUE;
foreach_stop = TRUE;
/* TRUE causes actions_run_acts to not run further actions on the current
client */