On 19/04/2019 06:53, Junio C Hamano wrote: > Phillip Wood <phillip.wood123@xxxxxxxxx> writes: > >> From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> >> >> commit b3a5d5a80c ("trace2:data: add subverb for rebase", 2019-02-22) >> mistakenly marked the subverb names for translation and unnecessarily >> NULL terminated the array. >> >> Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> >> --- >> builtin/rebase.c | 15 +++++++-------- >> 1 file changed, 7 insertions(+), 8 deletions(-) >> >> diff --git a/builtin/rebase.c b/builtin/rebase.c >> index 52114cbf0d..239a54ecfe 100644 >> --- a/builtin/rebase.c >> +++ b/builtin/rebase.c >> @@ -1027,14 +1027,13 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) >> ACTION_EDIT_TODO, >> ACTION_SHOW_CURRENT_PATCH, >> } action = NO_ACTION; >> - static const char *action_names[] = { N_("undefined"), >> - N_("continue"), >> - N_("skip"), >> - N_("abort"), >> - N_("quit"), >> - N_("edit_todo"), >> - N_("show_current_patch"), >> - NULL }; >> + static const char *action_names[] = { "undefined", >> + "continue", >> + "skip", >> + "abort", >> + "quit", >> + "edit_todo", >> + "show_current_patch" }; > > That's an improvement independent from the rest of the patches. Yes I only included it as I move the definition later in the series > Now we've had the C99 designated initialisers weather balloon > changes for some time in our codebase, perhaps we can ensure that > these entries match the intended & corresponding "enum action" > constants? If we can also ensure that the array is large enough so > that the trace2 call done like so > > trace2_cmd_mode(action_names[action]) > > is safe, that would be good, but that is secondary. > > Thanks. If what's below is ok, I'll send a re-roll, I wasn't sure if it was best to die if action is larger than the array of names or just use a default. My worrying with dying is that it wont be caught by tests and will cause a problem for users who enable tracing. At least with what's below they can still rebase and hopefully report a bug about unknown action in their trace output. Best Wishes Phillip diff --git a/builtin/rebase.c b/builtin/rebase.c index 52114cbf0d..3f56be230e 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -1027,14 +1027,15 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) ACTION_EDIT_TODO, ACTION_SHOW_CURRENT_PATCH, } action = NO_ACTION; - static const char *action_names[] = { N_("undefined"), - N_("continue"), - N_("skip"), - N_("abort"), - N_("quit"), - N_("edit_todo"), - N_("show_current_patch"), - NULL }; + static const char *action_names[] = { + [NO_ACTION] = "undefined", + [ACTION_CONTINUE] = "continue", + [ACTION_SKIP] = "skip", + [ACTION_ABORT] = "abort", + [ACTION_QUIT] = "quit", + [ACTION_EDIT_TODO] = "edit_todo", + [ACTION_SHOW_CURRENT_PATCH] = "show_current_patch" + }; const char *gpg_sign = NULL; struct string_list exec = STRING_LIST_INIT_NODUP; const char *rebase_merges = NULL; @@ -1225,8 +1226,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) trace2_cmd_mode("interactive"); else if (exec.nr) trace2_cmd_mode("interactive-exec"); - else + else if (action < ARRAY_SIZE(action_names)) trace2_cmd_mode(action_names[action]); + else + trace2_cmd_mode("unknown rebase action"); } switch (action) {