X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=985c160a245b9f3b16f33ecedb2e9a79b4c99c9c;hp=45a9895a9ef444b3b3f7638f543e1f743839df73;hb=04cfb5daeff6cbceef152fc01ad5852407c0c918;hpb=74ed6f367314f4b4f373b45f82cedd04595a2608 diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 45a9895a..985c160a 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -1760,8 +1760,8 @@ boolean getTokenValueFromSetupLine(char *line, char **token, char **value) } #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]; @@ -1780,7 +1780,7 @@ static void loadSetupFileData(void *setup_file_data, char *filename, { Error(ERR_WARN, "cannot open configuration file '%s'", filename); - return; + return FALSE; } /* use "insert pointer" to store list end for constant insertion complexity */ @@ -1895,12 +1895,14 @@ static void loadSetupFileData(void *setup_file_data, char *filename, 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]; @@ -1919,7 +1921,7 @@ static void loadSetupFileData(void *setup_file_data, char *filename, { Error(ERR_WARN, "cannot open configuration file '%s'", filename); - return; + return FALSE; } /* use "insert pointer" to store list end for constant insertion complexity */ @@ -2125,6 +2127,8 @@ static void loadSetupFileData(void *setup_file_data, char *filename, if (top_recursion_level) freeSetupFileHash(include_filename_hash); + + return TRUE; } #endif @@ -2154,7 +2158,12 @@ SetupFileList *loadSetupFileList(char *filename) 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; @@ -2169,7 +2178,12 @@ SetupFileHash *loadSetupFileHash(char *filename) { 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; }