]> Dogcows Code - chaz/openbox/blobdiff - openbox/menu.c
give actions a ref count
[chaz/openbox] / openbox / menu.c
index 3a0cb12a9ce3da394e782150e4a53ba68dc08bfd..2bd382cbab5227e3426ce803f44760a1225ee338 100644 (file)
@@ -1,4 +1,4 @@
-/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*-
+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
 
    menu.c for the Openbox window manager
    Copyright (c) 2003        Ben Jansens
@@ -176,10 +176,12 @@ static void parse_menu_item(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             GSList *acts = NULL;
 
             for (node = node->children; node; node = node->next)
-                if (!xmlStrcasecmp(node->name, (const xmlChar*) "action"))
-                    acts = g_slist_append(acts, action_parse
-                                          (i, doc, node,
-                                           OB_USER_ACTION_MENU_SELECTION));
+                if (!xmlStrcasecmp(node->name, (const xmlChar*) "action")) {
+                    ObAction *a = action_parse
+                        (i, doc, node, OB_USER_ACTION_MENU_SELECTION);
+                    if (a)
+                        acts = g_slist_append(acts, a);
+                }
             menu_add_normal(state->parent, -1, label, acts);
             g_free(label);
         }
@@ -324,7 +326,7 @@ void menu_entry_free(ObMenuEntry *self)
         case OB_MENU_ENTRY_TYPE_NORMAL:
             g_free(self->data.normal.label);
             while (self->data.normal.actions) {
-                action_free(self->data.normal.actions->data);
+                action_unref(self->data.normal.actions->data);
                 self->data.normal.actions =
                     g_slist_delete_link(self->data.normal.actions,
                                         self->data.normal.actions);
This page took 0.021696 seconds and 4 git commands to generate.