}
#if 1
-static void loadSetupFileData(void *setup_file_data, char *filename,
- boolean top_recursion_level, boolean is_hash)
+static boolean loadSetupFileData(void *setup_file_data, char *filename,
+ boolean top_recursion_level, boolean is_hash)
{
static SetupFileHash *include_filename_hash = NULL;
char line[MAX_LINE_LEN], line_raw[MAX_LINE_LEN], previous_line[MAX_LINE_LEN];
{
Error(ERR_WARN, "cannot open configuration file '%s'", filename);
- return;
+ return FALSE;
}
/* use "insert pointer" to store list end for constant insertion complexity */
if (top_recursion_level)
freeSetupFileHash(include_filename_hash);
+
+ return TRUE;
}
#else
-static void loadSetupFileData(void *setup_file_data, char *filename,
- boolean top_recursion_level, boolean is_hash)
+static boolean loadSetupFileData(void *setup_file_data, char *filename,
+ boolean top_recursion_level, boolean is_hash)
{
static SetupFileHash *include_filename_hash = NULL;
char line[MAX_LINE_LEN], line_raw[MAX_LINE_LEN], previous_line[MAX_LINE_LEN];
{
Error(ERR_WARN, "cannot open configuration file '%s'", filename);
- return;
+ return FALSE;
}
/* use "insert pointer" to store list end for constant insertion complexity */
if (top_recursion_level)
freeSetupFileHash(include_filename_hash);
+
+ return TRUE;
}
#endif
SetupFileList *setup_file_list = newSetupFileList("", "");
SetupFileList *first_valid_list_entry;
- loadSetupFileData(setup_file_list, filename, TRUE, FALSE);
+ if (!loadSetupFileData(setup_file_list, filename, TRUE, FALSE))
+ {
+ freeSetupFileList(setup_file_list);
+
+ return NULL;
+ }
first_valid_list_entry = setup_file_list->next;
{
SetupFileHash *setup_file_hash = newSetupFileHash();
- loadSetupFileData(setup_file_hash, filename, TRUE, TRUE);
+ if (!loadSetupFileData(setup_file_hash, filename, TRUE, TRUE))
+ {
+ freeSetupFileHash(setup_file_hash);
+
+ return NULL;
+ }
return setup_file_hash;
}