X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=plugins%2Fmenu%2Ffifo_menu.c;h=3443294e2ced983b66c85e424956c6a71056bfb2;hb=d51702affa3e3895f9fca218de39690f8958b500;hp=fc5ed0e1e3e07105f3f205efae9559ec8dd5c6a3;hpb=fd19711e6a7cdc63f10b79cedc7ff54d7a9d2e81;p=chaz%2Fopenbox diff --git a/plugins/menu/fifo_menu.c b/plugins/menu/fifo_menu.c index fc5ed0e1..3443294e 100644 --- a/plugins/menu/fifo_menu.c +++ b/plugins/menu/fifo_menu.c @@ -79,15 +79,18 @@ void fifo_menu_handler(int fd, void *d) { num_realloc); if (num_read == 0) { /* eof */ + xmlDocPtr doc; + xmlNodePtr node; + menu->invalid = TRUE; menu_clear(menu); FIFO_MENU_DATA(menu)->buf[FIFO_MENU_DATA(menu)->buflen] = '\0'; - xmlDocPtr doc = xmlParseMemory(FIFO_MENU_DATA(menu)->buf, - FIFO_MENU_DATA(menu)->buflen); + doc = xmlParseMemory(FIFO_MENU_DATA(menu)->buf, + FIFO_MENU_DATA(menu)->buflen); - xmlNodePtr node = xmlDocGetRootElement(doc); + node = xmlDocGetRootElement(doc); if (node && !xmlStrcasecmp(node->name, (const xmlChar*) "fifo_menu")) { @@ -130,6 +133,11 @@ void plugin_destroy (ObMenu *m) FIFO_MENU_DATA(m)->fifo = NULL; } + if (FIFO_MENU_DATA(m)->buf != NULL) { + g_free(FIFO_MENU_DATA(m)->buf); + FIFO_MENU_DATA(m)->buf = NULL; + } + g_free(m->plugin_data); menu_free(m->name); @@ -159,9 +167,11 @@ void *plugin_create(PluginMenuCreateData *data) m = menu_new( (label != NULL ? label : ""), (id != NULL ? id : PLUGIN_NAME), data->parent); - menu_add_entry(data->parent, menu_entry_new_submenu( - (label != NULL ? label : ""), - m)); + + if (data->parent) + menu_add_entry(data->parent, menu_entry_new_submenu( + (label != NULL ? label : ""), + m)); g_free(label); g_free(id);