The condition "if (q->nr <= j)" checks whether the loop exited normally or via a break statement. Avoid this check by replacing the jump out of the inner loop with a jump to the end of the outer loop, which makes it obvious that diff_q is not executed when the peer survives. Signed-off-by: Alex Henrie <alexhenrie24@xxxxxxxxx> --- diffcore-break.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/diffcore-break.c b/diffcore-break.c index 875aefd3fe..9d20a6a6fc 100644 --- a/diffcore-break.c +++ b/diffcore-break.c @@ -286,17 +286,17 @@ void diffcore_merge_broken(void) /* Peer survived. Merge them */ merge_broken(p, pp, &outq); q->queue[j] = NULL; - break; + goto next; } } - if (q->nr <= j) - /* The peer did not survive, so we keep - * it in the output. - */ - diff_q(&outq, p); + /* The peer did not survive, so we keep + * it in the output. + */ + diff_q(&outq, p); } else diff_q(&outq, p); +next:; } free(q->queue); *q = outq; -- 2.23.0