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:
parent
2bd78e1239
commit
edb6796286
|
@ -1339,6 +1339,15 @@ struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp
|
||||||
return context;
|
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)
|
int command_context_mode(struct command_context *cmd_ctx, enum command_mode mode)
|
||||||
{
|
{
|
||||||
if (!cmd_ctx)
|
if (!cmd_ctx)
|
||||||
|
|
|
@ -307,6 +307,14 @@ struct command_context *current_command_context(Jim_Interp *interp);
|
||||||
* creates a command interpreter.
|
* creates a command interpreter.
|
||||||
*/
|
*/
|
||||||
struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp);
|
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
|
* 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
|
* a deep copy of the command list, so modifications in one context will
|
||||||
|
|
|
@ -344,8 +344,8 @@ int openocd_main(int argc, char *argv[])
|
||||||
|
|
||||||
unregister_all_commands(cmd_ctx, NULL);
|
unregister_all_commands(cmd_ctx, NULL);
|
||||||
|
|
||||||
/* free commandline interface */
|
/* Shutdown commandline interface */
|
||||||
command_done(cmd_ctx);
|
command_exit(cmd_ctx);
|
||||||
|
|
||||||
adapter_quit();
|
adapter_quit();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue