From: <ag...@us...> - 2013-05-08 14:03:57
|
Revision: 2762 http://nagios.svn.sourceforge.net/nagios/?rev=2762&view=rev Author: ageric Date: 2013-05-08 14:03:50 +0000 (Wed, 08 May 2013) Log Message: ----------- core: free() more variables when quitting While we'd like to get "No leaks possible" from valgrind, we'll have to settle for the memory my_strtok() allocates and keeps a pointer to (for now anyways). We also make sure to assign more of the "runtime constant" macros from our global variables, to avoid tracking both of them for leaks. Signed-off-by: Andreas Ericsson <ae...@op...> Modified Paths: -------------- nagioscore/trunk/base/config.c nagioscore/trunk/base/utils.c Modified: nagioscore/trunk/base/config.c =================================================================== --- nagioscore/trunk/base/config.c 2013-05-08 14:03:29 UTC (rev 2761) +++ nagioscore/trunk/base/config.c 2013-05-08 14:03:50 UTC (rev 2762) @@ -227,8 +227,7 @@ command_file = nspath_absolute(value, config_file_dir); /* save the macro */ - my_free(mac->x[MACRO_COMMANDFILE]); - mac->x[MACRO_COMMANDFILE] = (char *)strdup(value); + mac->x[MACRO_COMMANDFILE] = command_file; } else if(!strcmp(variable, "temp_file")) { @@ -1188,10 +1187,8 @@ } /* save the macros */ - my_free(mac->x[MACRO_TEMPPATH]); - my_free(mac->x[MACRO_TEMPFILE]); - mac->x[MACRO_TEMPPATH] = (char *)strdup(temp_path); - mac->x[MACRO_TEMPFILE] = (char *)strdup(temp_file); + mac->x[MACRO_TEMPPATH] = temp_path; + mac->x[MACRO_TEMPFILE] = temp_file; /* adjust timezone values */ if(use_timezone != NULL) Modified: nagioscore/trunk/base/utils.c =================================================================== --- nagioscore/trunk/base/utils.c 2013-05-08 14:03:29 UTC (rev 2761) +++ nagioscore/trunk/base/utils.c 2013-05-08 14:03:50 UTC (rev 2762) @@ -3099,6 +3099,8 @@ /* free the memory allocated to the linked lists */ void free_memory(nagios_macros *mac) { + int i; + /* free all allocated memory for the object definitions */ free_object_data(); @@ -3148,15 +3150,30 @@ my_free(new_program_version); /* free file/path variables */ + my_free(debug_file); my_free(log_file); mac->x[MACRO_LOGFILE] = NULL; /* assigned from 'log_file' */ - my_free(debug_file); my_free(temp_file); + mac->x[MACRO_TEMPFILE] = NULL; /* assigned from temp_file */ my_free(temp_path); + mac->x[MACRO_TEMPPATH] = NULL; /*assigned from temp_path */ my_free(check_result_path); my_free(command_file); + mac->x[MACRO_COMMANDFILE] = NULL; /* assigned from command_file */ my_free(log_archive_path); + my_free(lock_file); + for (i = 0; i < MAX_USER_MACROS; i++) { + my_free(macro_user[i]); + } + + /* these have no other reference */ + my_free(mac->x[MACRO_ADMINEMAIL]); + my_free(mac->x[MACRO_ADMINPAGER]); + my_free(mac->x[MACRO_RESOURCEFILE]); + my_free(mac->x[MACRO_OBJECTCACHEFILE]); + my_free(mac->x[MACRO_MAINCONFIGFILE]); + return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |