summaryrefslogtreecommitdiff
path: root/obt/ddfile.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2010-03-24 21:58:32 -0400
committerDana Jansens <danakj@orodu.net>2010-03-25 18:11:13 -0400
commit448cc6620e1b36544c2ce2e75727e55cdf604f80 (patch)
tree8ca799b3884818e335ce5476cb8e284f32a5bad9 /obt/ddfile.c
parent159a3cb3b1dcf0b3d1cb3a194a181d4e6aea57a4 (diff)
close the .desktop file after parsing it
Diffstat (limited to 'obt/ddfile.c')
-rw-r--r--obt/ddfile.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/obt/ddfile.c b/obt/ddfile.c
index e32dff3e..e8342224 100644
--- a/obt/ddfile.c
+++ b/obt/ddfile.c
@@ -343,6 +343,7 @@ ObtDDFile* obt_ddfile_new_from_file(const gchar *name, GSList *paths)
ObtDDParse parse;
GSList *it;
FILE *f;
+ gboolean success;
dd = g_slice_new(ObtDDFile);
dd->ref = 1;
@@ -350,23 +351,23 @@ ObtDDFile* obt_ddfile_new_from_file(const gchar *name, GSList *paths)
parse.filename = NULL;
parse.lineno = 0;
parse.group = NULL;
- /* hashtable keys are group names, value is a ObtDDParseGroup */
parse.group_hash = g_hash_table_new_full(g_str_hash,
g_str_equal,
NULL,
(GDestroyNotify)group_free);
- f = NULL;
- for (it = paths; it && !f; it = g_slist_next(it)) {
+ success = FALSE;
+ for (it = paths; it && !success; it = g_slist_next(it)) {
gchar *path = g_strdup_printf("%s/%s", (char*)it->data, name);
if ((f = fopen(path, "r"))) {
parse.filename = path;
parse.lineno = 1;
- if (!parse_file(dd, f, &parse)) f = NULL;
+ success = parse_file(dd, f, &parse);
+ fclose(f);
}
g_free(path);
}
- if (!f) {
+ if (!success) {
obt_ddfile_unref(dd);
dd = NULL;
}