Stefan Beller <sbeller@xxxxxxxxxx> writes: > > +static int starts_with_emptyline(const char *recs) > +{ > + return recs[0] == '\n'; /* CRLF not covered here */ > +} > + > + That's "is-empty-line", not "starts-with" ;-) > + > + /* > + * If a group can be moved back and forth, see if there is an > + * empty line in the moving space. If there is an empty line, > + * make sure the last empty line is the end of the group. > + * > + * As we shifted the group forward as far as possible, we only > + * need to shift it back if at all. > + */ Sounds sensible. > + if (has_emptyline) { > + while (ixs > 0 && recs[ixs - 1]->ha == recs[ix - 1]->ha && > + xdl_recmatch(recs[ixs - 1]->ptr, recs[ixs - 1]->size, recs[ix - 1]->ptr, recs[ix - 1]->size, flags) && > + !starts_with_emptyline(recs[ix - 1]->ptr)) { You probably want to wrap the "hash compares equal and recmatch does say they are the same" into a helper function (to be automatically inlined by the compiler) to make it more readable here. I think is-empty is a lot cheaper than the recmatch so that should probably be done earlier in the && chain. > + rchg[--ixs] = 1; > + rchg[--ix] = 0; > + > + /* > + * This change did not join two change groups, > + * as we did that before already, so there is no Sorry, cannot quite parse the part before "already". > + * need to adapt the other-file, i.e. > + * running > + * for (; rchg[ixs - 1]; ixs--); > + * while (rchgo[--ixo]); > + */ > + } > + } > } > > return 0; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html