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:
parent
d8f1ef057b
commit
1ea131048d
1 changed files with 7 additions and 8 deletions
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue