diff options
author | Marc Schink <openocd-dev@marcschink.de> | 2018-01-10 12:45:52 +0100 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2018-01-17 07:52:35 +0000 |
commit | edb67962865d5d3cc4a8ec1790b4c8c5327e98fd (patch) | |
tree | c6dec5a569c13307bfc85b33498cdf3d631ba51d /src/helper | |
parent | 2bd78e12392f99ffed0b9fd815000f5bcfd3db14 (diff) | |
download | riscv-openocd-edb67962865d5d3cc4a8ec1790b4c8c5327e98fd.zip riscv-openocd-edb67962865d5d3cc4a8ec1790b4c8c5327e98fd.tar.gz riscv-openocd-edb67962865d5d3cc4a8ec1790b4c8c5327e98fd.tar.bz2 |
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>
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.c | 9 | ||||
-rw-r--r-- | src/helper/command.h | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index 40e8b05..cbd52fb 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -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) diff --git a/src/helper/command.h b/src/helper/command.h index bd24156..f696ab8 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -308,6 +308,14 @@ struct command_context *current_command_context(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 * a deep copy of the command list, so modifications in one context will * affect all shared contexts. The caller must track reference counting |