summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-08-28 17:27:13 +0000
committerDana Jansens <danakj@orodu.net>2003-08-28 17:27:13 +0000
commitfb035e4b0f91fa68a833f681f1f7bd7c71325bdb (patch)
tree937bc67ae38c165f8d6bb037bc4c8caeb64fec09 /openbox
parent5c63aaa9ae2198cac5fe9b95d89478d8f56002a8 (diff)
fix crash bug is parsing menu section of the rc3
Diffstat (limited to 'openbox')
-rw-r--r--openbox/config.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/openbox/config.c b/openbox/config.c
index f0b78d7d..54ae4c33 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -36,7 +36,7 @@ guint config_keyboard_reset_state;
gint config_mouse_threshold;
gint config_mouse_dclicktime;
-gchar *config_menu_path;
+GSList *config_menu_files;
gint config_resist_win;
gint config_resist_edge;
@@ -228,10 +228,14 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
node = node->xmlChildrenNode;
if ((n = parse_find_node("theme", node))) {
+ gchar *c;
+
g_free(config_theme);
- config_theme = parse_string(doc, n);
+ c = parse_string(doc, n);
+ config_theme = expand_tilde(c);
+ g_free(c);
}
- if ((n = parse_find_node("titlelayout", node))) {
+ if ((n = parse_find_node("titleLayout", node))) {
g_free(config_title_layout);
config_title_layout = parse_string(doc, n);
}
@@ -339,15 +343,15 @@ static void parse_dock(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, void *d)
{
- xmlNodePtr n;
-
- node = node->xmlChildrenNode;
- if ((n = parse_find_node("location", node))) {
- gchar *c;
-
- c = parse_string(doc, n);
- config_menu_path = expand_tilde(c);
- g_free(c);
+ for (node = node->xmlChildrenNode; node; node = node->next) {
+ if (!xmlStrcasecmp(node->name, (const xmlChar*) "file")) {
+ gchar *c;
+
+ c = parse_string(doc, node);
+ config_menu_files = g_slist_append(config_menu_files,
+ expand_tilde(c));
+ g_free(c);
+ }
}
}
@@ -415,7 +419,7 @@ void config_startup(ObParseInst *i)
parse_register(i, "resistance", parse_resistance, NULL);
- config_menu_path = NULL;
+ config_menu_files = NULL;
parse_register(i, "menu", parse_menu, NULL);
}
@@ -426,7 +430,11 @@ void config_shutdown()
g_free(config_theme);
- for (it = config_desktops_names; it; it = it->next)
+ for (it = config_desktops_names; it; it = g_slist_next(it))
g_free(it->data);
g_slist_free(config_desktops_names);
+
+ for (it = config_menu_files; it; it = g_slist_next(it))
+ g_free(it->data);
+ g_slist_free(config_menu_files);
}