Phillip Wood <phillip.wood123@xxxxxxxxx> writes: >> @@ -2609,7 +2609,7 @@ int todo_list_parse_insn_buffer(struct repository *r, char *buf, >> char *p = buf, *next_p; >> int i, res = 0, fixup_okay = file_exists(rebase_path_done()); >> - todo_list->current = todo_list->nr = 0; >> + todo_list->current = todo_list->nr = todo_list->total_nr = 0; >> for (i = 1; *p; i++, p = next_p) { >> char *eol = strchrnul(p, '\n'); >> @@ -2628,7 +2628,8 @@ int todo_list_parse_insn_buffer(struct repository *r, char *buf, >> item->arg_offset = p - buf; >> item->arg_len = (int)(eol - p); >> item->commit = NULL; >> - } >> + } else if (item->command == TODO_COMMENT) >> + todo_list->total_nr--; > > This feels a bit fragile, I think it would be better to count the > commands properly in the first place rather than adjusting the total > here. We could do that by not incrementing "todo_list->total_nr" in > append_new_todo() and then doing > > if (item->command != TODO_COMMENT) > todo_list->total_nr++; > > here. We may want to stop counting invalid commands as well by only > counting commands whre "item->command < TODO_COMMENT". OK. >> @@ -6088,11 +6090,13 @@ int complete_action(struct repository *r, struct replay_opts *opts, unsigned fla >> return -1; >> } >> + new_total_nr += count_commands(&new_todo); >> + new_todo.total_nr = new_total_nr; >> + >> /* Expand the commit IDs */ >> todo_list_to_strbuf(r, &new_todo, &buf2, -1, 0); >> strbuf_swap(&new_todo.buf, &buf2); >> strbuf_release(&buf2); >> - new_todo.total_nr -= new_todo.nr; > > I think if we just change this line to > > new_todo.total_nr = 0; > > we don't need any other changes to this function. This is because > complete_action() is only called at the start of a rebase so we don't > need to worry about "total_nr" including commands that have already > been executed. The reason we need to set it to zero here is that we > re-parse the todo list below which increments "total_nr" by the number > of commands parsed. > > Thanks for working on this. > Best Wishes > > Phillip Thanks both for working on the fix and reviewing the patch.