Jeff King <peff@xxxxxxxx> writes: > it does. It just adjusts our "end pointer" to point to the last valid > character in the string (rather than one past), which seems to be the > convention that those loops (and next_byte) expect. Yeah I am not sure if I like this comparison at the beginning of the function: static int next_byte(const char **cp, const char **endp, const struct diff_options *diffopt) { int retval; if (*cp > *endp) return -1; but it says endp _is_ part of valid input, contrary to my intuition. And your change to the initialization of ae/be in moved_entry_cmp() makes it consistent with it, I think. But doesn't it mean ae computation in get_string_hash() also needs a massaging?