|
From: openocd-gerrit <ope...@us...> - 2024-01-13 14:44:04
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Main OpenOCD repository".
The branch, master has been updated
via f9ea9ce24cf4423111a7fa033f8ceff61d17aa5b (commit)
from 712c1244e8486bb4519ad0144a03c3c48c030214 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f9ea9ce24cf4423111a7fa033f8ceff61d17aa5b
Author: Antonio Borneo <bor...@gm...>
Date: Sun Aug 6 11:34:28 2023 +0200
helper/command: simplify exec_command()
The jimtcl interpreter guarantees that the Jim objects in argv[]
are not deallocated during the command execution. Thus, there is
no need to copy the string content of argv[].
Simplify exec_command() by inlining its two sub-functions and
dropping the strdup().
While there, add a LOG_ERROR() for out of memory.
Change-Id: I3e21ed7da50ca0bd072edbd49fca9740c81f95b0
Signed-off-by: Antonio Borneo <bor...@gm...>
Reviewed-on: https://review.openocd.org/c/openocd/+/8055
Tested-by: jenkins
diff --git a/src/helper/command.c b/src/helper/command.c
index f7ec0e21f..8860cf81f 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -154,30 +154,6 @@ static void script_debug(Jim_Interp *interp, unsigned int argc, Jim_Obj * const
free(dbg);
}
-static void script_command_args_free(char **words, unsigned nwords)
-{
- for (unsigned i = 0; i < nwords; i++)
- free(words[i]);
- free(words);
-}
-
-static char **script_command_args_alloc(unsigned int argc, Jim_Obj * const *argv)
-{
- char **words = malloc(argc * sizeof(char *));
- if (!words)
- return NULL;
-
- for (unsigned int i = 0; i < argc; i++) {
- const char *w = Jim_GetString(argv[i], NULL);
- words[i] = strdup(w);
- if (!words[i]) {
- script_command_args_free(words, i);
- return NULL;
- }
- }
- return words;
-}
-
struct command_context *current_command_context(Jim_Interp *interp)
{
/* grab the command context from the associated data */
@@ -898,13 +874,17 @@ static int exec_command(Jim_Interp *interp, struct command_context *cmd_ctx,
return c->jim_handler(interp, argc, argv);
/* use c->handler */
- unsigned int nwords = argc;
- char **words = script_command_args_alloc(argc, argv);
- if (!words)
+ const char **words = malloc(argc * sizeof(char *));
+ if (!words) {
+ LOG_ERROR("Out of memory");
return JIM_ERR;
+ }
- int retval = run_command(cmd_ctx, c, (const char **)words, nwords);
- script_command_args_free(words, nwords);
+ for (int i = 0; i < argc; i++)
+ words[i] = Jim_GetString(argv[i], NULL);
+
+ int retval = run_command(cmd_ctx, c, words, argc);
+ free(words);
return command_retval_set(interp, retval);
}
-----------------------------------------------------------------------
Summary of changes:
src/helper/command.c | 38 +++++++++-----------------------------
1 file changed, 9 insertions(+), 29 deletions(-)
hooks/post-receive
--
Main OpenOCD repository
|