"Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > + /* > + * Insert <commands> after every pick. Here, fixup/squash chains > + * are considered part of the pick, so we insert the commands *after* > + * those chains if there are any. > + */ > + insert_final_commands = 1; > + for (i = 0; i < todo_list.nr; ) { > + enum todo_command command = todo_list.items[i].command; > + int j = 0; > + ... > + /* skip fixup/squash chain, if any */ > + for (i++; i < todo_list.nr; i++, j = 0) { Does 'j' need to be reset to 0 in each iteration? Nobody looks at 'j' after exiting this inner loop, and every referernce to 'j' inside this inner loop happens _after_ it gets assigned "i+1" at the beginning of "skip comment" loop. For that matter, I wonder if 'j' can be a variable local to this inner loop, not the outer loop that iterates over todo_list.items[]. > + command = todo_list.items[i].command; > + > + if (is_fixup(command)) > + continue; > + > + if (command != TODO_COMMENT) > + break; > + > + /* skip comment if followed by any fixup/squash */ > + for (j = i + 1; j < todo_list.nr; j++) > + if (todo_list.items[j].command != TODO_COMMENT) > + break; > + if (j < todo_list.nr && > + is_fixup(todo_list.items[j].command)) { > + i = j; > + continue; > + } > + break; > }