diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-05-07 12:15:19 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-05-07 12:15:19 +0000 |
commit | a197e759ffcb047a383adf686966f68934fef206 (patch) | |
tree | c411265e8592850792784a3deb27be34a2f3bf8b /src/helper | |
parent | 2b9dbccfcf17d9915a066b558c7066f6b96088e0 (diff) | |
download | openocd+libswd-a197e759ffcb047a383adf686966f68934fef206.tar.gz openocd+libswd-a197e759ffcb047a383adf686966f68934fef206.tar.bz2 openocd+libswd-a197e759ffcb047a383adf686966f68934fef206.tar.xz openocd+libswd-a197e759ffcb047a383adf686966f68934fef206.zip |
Edgar Grimberg plugged a leak found w/Valgrind.
git-svn-id: svn://svn.berlios.de/openocd/trunk@646 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.c | 39 | ||||
-rw-r--r-- | src/helper/command.h | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index 31666e3a..0a120b10 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -143,6 +143,45 @@ command_t* register_command(command_context_t *context, command_t *parent, char return c; } +int unregister_all_commands(command_context_t *context) +{ + command_t *c, *c2; + + unique_length_dirty = 1; + + if (context == NULL) + return ERROR_OK; + + + while(NULL != context->commands) + { + c = context->commands; + + while(NULL != c->children) + { + c2 = c->children; + c->children = c->children->next; + free(c2->name); + c2->name = NULL; + free(c2->help); + c2->help = NULL; + free(c2); + c2 = NULL; + } + + context->commands = context->commands->next; + + free(c->name); + c->name = NULL; + free(c->help); + c->help = NULL; + free(c); + c = NULL; + } + + return ERROR_OK; +} + int unregister_command(command_context_t *context, char *name) { command_t *c, *p = NULL, *c2; diff --git a/src/helper/command.h b/src/helper/command.h index 3586017d..ed6a96a7 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -66,6 +66,7 @@ typedef struct command_s extern command_t* register_command(command_context_t *context, command_t *parent, char *name, int (*handler)(struct command_context_s *context, char* name, char** args, int argc), enum command_mode mode, char *help); extern int unregister_command(command_context_t *context, char *name); +extern int unregister_all_commands(command_context_t *context); extern void command_set_output_handler(command_context_t* context, int (*output_handler)(struct command_context_s *context, char* line), void *priv); extern command_context_t* copy_command_context(command_context_t* context); extern command_context_t* command_init(); |