From 41eab8d3ccf1a016fe648f2726650e0ac618b3c0 Mon Sep 17 00:00:00 2001 From: Anthony Molinaro Date: Fri, 20 Nov 2009 17:44:41 +0000 Subject: [PATCH] return an error when a non-existent esf file is loaded (or I guess technically not loaded git-svn-id: https://lwes.svn.sourceforge.net/svnroot/lwes/lwes/trunk@307 a2f82657-cdd2-4550-bd36-68a8e7111808 --- ChangeLog | 2 ++ src/lwes_esf_parser_y.y | 1 + src/lwes_event_type_db.c | 6 +++++- tests/testeventtypedb.c | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2f781d6..fb0d4b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ Version 0.23.0 (molinaro) lwes-event-counting-listener, this allows these programs to be the head of a processing pipeline, and correctly shutdown when the program after it in the pipeline exits. + * return an error from esf_parser and event_type_db when a non-existent esf + is attempted to be loaded Version 0.22.3 (mlum) * Fixed memory leak in lexer diff --git a/src/lwes_esf_parser_y.y b/src/lwes_esf_parser_y.y index 15a1732..63115fe 100644 --- a/src/lwes_esf_parser_y.y +++ b/src/lwes_esf_parser_y.y @@ -221,6 +221,7 @@ lwes_parse_esf else { fprintf (stderr,"ERROR: No such file : \"%s\"\n",filename); + state.errors++; } if (state.errors) diff --git a/src/lwes_event_type_db.c b/src/lwes_event_type_db.c index d3e91f1..ce38317 100644 --- a/src/lwes_event_type_db.c +++ b/src/lwes_event_type_db.c @@ -36,7 +36,11 @@ lwes_event_type_db_create db->events = lwes_hash_create (); if (db->events != NULL) { - lwes_parse_esf (db, db->esf_filename); + if (lwes_parse_esf (db, db->esf_filename) != 0) + { + free (db); + db = NULL; + } } else { diff --git a/tests/testeventtypedb.c b/tests/testeventtypedb.c index 9f35e30..3a37409 100644 --- a/tests/testeventtypedb.c +++ b/tests/testeventtypedb.c @@ -84,6 +84,8 @@ test_db (void) { struct lwes_event_type_db *db; const char *esffile = "testeventtypedb.esf"; + const char *nofile = "doesntexist.esf"; + /* cause malloc to fail at initial malloc */ null_at = 1; db = lwes_event_type_db_create((char*)esffile); @@ -95,6 +97,10 @@ test_db (void) assert ( db == NULL ); hash_null = 0; + /* try to load a non-existent files */ + db = lwes_event_type_db_create ((char *)nofile); + assert (db == NULL); + /* succeed this time */ db = lwes_event_type_db_create((char*)esffile); assert ( db != NULL ); -- 2.11.4.GIT