X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions.c;h=9a5d193c4a2b33200416867eff81d769c0d224e2;hb=9dacac5e5e6b9ed86e76680b048bc227d8866ac6;hp=44a39cb5dd25b955852d2f13b2a94dd8f909541b;hpb=b76ec18d1c8857cf32598c822364298fc535c84e;p=chaz%2Fopenbox diff --git a/openbox/actions.c b/openbox/actions.c index 44a39cb5..9a5d193c 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -83,14 +83,15 @@ gboolean actions_register(const gchar *name, GSList *it; ObActionsDefinition *def; + g_assert(run != NULL); + g_assert((i_input == NULL) == (i_cancel == NULL)); + for (it = registered; it; it = g_slist_next(it)) { def = it->data; if (!g_ascii_strcasecmp(name, def->name)) /* already registered */ return FALSE; } - g_assert((i_input == NULL) == (i_cancel == NULL)); - def = g_new(ObActionsDefinition, 1); def->ref = 1; def->name = g_strdup(name); @@ -156,7 +157,8 @@ ObActionsAct* actions_parse(ObParseInst *i, if (parse_attr_string("name", node, &name)) { if ((act = actions_parse_string(name))) /* there is more stuff to parse here */ - act->options = act->def->setup(i, doc, node->xmlChildrenNode); + if (act->def->setup) + act->options = act->def->setup(i, doc, node->xmlChildrenNode); g_free(name); } @@ -178,7 +180,8 @@ void actions_act_unref(ObActionsAct *act) { if (act && --act->ref == 0) { /* free the action specific options */ - act->def->free(act->options); + if (act->def->free) + act->def->free(act->options); /* unref the definition */ actions_definition_unref(act->def); g_free(act);