Add another BSEARCH function that lets you search through an array of objects.
[mikachu/openbox.git] / obt / paths.c
index b20eb48..f2d4b42 100644 (file)
@@ -88,8 +88,10 @@ static GSList* split_paths(const gchar *paths)
     if (!paths)
         return NULL;
     spl = g_strsplit(paths, ":", -1);
-    for (it = spl; *it; ++it)
-        list = slist_path_add(list, *it, (GSListFunc) g_slist_append);
+    for (it = spl; *it; ++it) {
+        if ((*it)[0]) /* skip empty strings */
+            list = slist_path_add(list, *it, (GSListFunc) g_slist_append);
+    }
     g_free(spl);
     return list;
 }
@@ -231,9 +233,13 @@ void obt_paths_unref(ObtPaths *p)
         for (it = p->autostart_dirs; it; it = g_slist_next(it))
             g_free(it->data);
         g_slist_free(p->autostart_dirs);
+        for (it = p->exec_dirs; it; it = g_slist_next(it))
+            g_free(it->data);
+        g_slist_free(p->exec_dirs);
         g_free(p->config_home);
         g_free(p->data_home);
         g_free(p->cache_home);
+        g_free(p->gid);
 
         g_slice_free(ObtPaths, p);
     }
@@ -329,7 +335,7 @@ static inline gboolean try_exec(const ObtPaths *const p,
                                 const gchar *const path)
 {
     struct stat st;
-    BSEARCH_SETUP(guint);
+    BSEARCH_SETUP();
 
     if (stat(path, &st) != 0)
         return FALSE;