Fix Jim interpreter memory leak

Change-Id: I71d7d97e7dc315c42fc43b65cb5fcecd7bdfb581
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/2959
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Marc Schink 2018-01-10 12:45:52 +01:00 committed by Tomas Vanek
parent 2bd78e1239
commit edb6796286
3 changed files with 19 additions and 2 deletions

View File

@ -1339,6 +1339,15 @@ struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp
return context;
}
void command_exit(struct command_context *context)
{
if (!context)
return;
Jim_FreeInterp(context->interp);
command_done(context);
}
int command_context_mode(struct command_context *cmd_ctx, enum command_mode mode)
{
if (!cmd_ctx)

View File

@ -307,6 +307,14 @@ struct command_context *current_command_context(Jim_Interp *interp);
* creates a command interpreter.
*/
struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp);
/**
* Shutdown a command context.
*
* Free the command context and the associated Jim interpreter.
*
* @param context The command_context that will be destroyed.
*/
void command_exit(struct command_context *context);
/**
* Creates a copy of an existing command context. This does not create
* a deep copy of the command list, so modifications in one context will

View File

@ -344,8 +344,8 @@ int openocd_main(int argc, char *argv[])
unregister_all_commands(cmd_ctx, NULL);
/* free commandline interface */
command_done(cmd_ctx);
/* Shutdown commandline interface */
command_exit(cmd_ctx);
adapter_quit();