summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2010-11-03 20:29:17 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2010-11-03 20:29:17 +0100
commitdce6d94d8b7ed2971ce1bc45eee0600439039fbd (patch)
tree1e35de7753a7ad96012f804f8656a7112fec6f97 /lib
parent76eea28e05500146cd79633f6935a8368bee6ff1 (diff)
downloadabrt-dce6d94d8b7ed2971ce1bc45eee0600439039fbd.tar.gz
abrt-dce6d94d8b7ed2971ce1bc45eee0600439039fbd.tar.xz
abrt-dce6d94d8b7ed2971ce1bc45eee0600439039fbd.zip
list_possible_events(): do not forget to unlock the dir!
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/run_event.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/utils/run_event.c b/lib/utils/run_event.c
index 020799a9..80c8d04d 100644
--- a/lib/utils/run_event.c
+++ b/lib/utils/run_event.c
@@ -98,6 +98,7 @@ int run_event(struct run_event_state *state,
p = next_word;
} /* end of word loop */
+ /* Don't keep dump dir locked across program runs */
dd_close(dd);
dd = NULL;
@@ -217,9 +218,9 @@ char *list_possible_events(const char *dump_dir_name, const char *pfx)
/* Get this name from dump dir */
if (!dd)
{
- /* Without dir name to match, we assume match */
+ /* Without dir name to match, we assume match for this expr */
if (!dump_dir_name)
- goto matched;
+ goto next_word;
dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
if (!dd)
goto stop; /* error (note: dd_opendir logged error msg) */
@@ -235,14 +236,11 @@ char *list_possible_events(const char *dump_dir_name, const char *pfx)
free(real_val);
}
+ next_word:
/* Go to next word */
p = next_word;
} /* end of word loop */
- matched:
- dd_close(dd);
- dd = NULL;
-
if (line[0] == '\n' /* do we *have* saved matched "\nEVENT_VAL\n"? */
/* and does result->buf NOT yet have VAL? */
&& strncmp(result->buf, line + 1, strlen(line + 1)) != 0
@@ -258,6 +256,7 @@ char *list_possible_events(const char *dump_dir_name, const char *pfx)
stop:
free(line);
+ dd_close(dd);
fclose(conffile);
return strbuf_free_nobuf(result);