log: fix memory leak when log to file is enabled
When log to file is enabled, the file is not closed by OpenOCD at exit. This is reported by Valgrind as a memory leak that is still reachable, as the internal buffers of 'FILE *log_output' are freed by the automatic fclose() at exit. Close the log file before exit. Change-Id: Id472c0d04462035254a9b49ecb0a4037263c6f6f Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/6789 Tested-by: jenkins
This commit is contained in:
parent
1536e249f2
commit
492ac453ab
|
@ -302,6 +302,15 @@ void log_init(void)
|
|||
start = last_time = timeval_ms();
|
||||
}
|
||||
|
||||
void log_exit(void)
|
||||
{
|
||||
if (log_output && log_output != stderr) {
|
||||
/* Close log file, if it was open and wasn't stderr. */
|
||||
fclose(log_output);
|
||||
}
|
||||
log_output = NULL;
|
||||
}
|
||||
|
||||
int set_log_output(struct command_context *cmd_ctx, FILE *output)
|
||||
{
|
||||
log_output = output;
|
||||
|
|
|
@ -72,6 +72,7 @@ __attribute__ ((format (PRINTF_ATTRIBUTE_FORMAT, 5, 6)));
|
|||
* Initialize logging module. Call during program startup.
|
||||
*/
|
||||
void log_init(void);
|
||||
void log_exit(void);
|
||||
int set_log_output(struct command_context *cmd_ctx, FILE *output);
|
||||
|
||||
int log_register_commands(struct command_context *cmd_ctx);
|
||||
|
|
|
@ -437,6 +437,8 @@ int openocd_main(int argc, char *argv[])
|
|||
rtt_exit();
|
||||
free_config();
|
||||
|
||||
log_exit();
|
||||
|
||||
if (ret == ERROR_FAIL)
|
||||
return EXIT_FAILURE;
|
||||
else if (ret != ERROR_OK)
|
||||
|
|
Loading…
Reference in New Issue