Stefan Beller <sbeller@xxxxxxxxxx> writes: > On Fri, Jun 30, 2017 at 10:54 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >> Stefan Beller <sbeller@xxxxxxxxxx> writes: >> >>> +static int next_byte(const char **cp, const char **endp, >>> + const struct diff_options *diffopt) >>> +{ >>> + int retval; >>> + >>> + if (DIFF_XDL_TST(diffopt, IGNORE_WHITESPACE_AT_EOL)) { >>> + while (*endp > *cp && isspace(**endp)) >>> + (*endp)--; >>> + } >> >> This should be done by the callers (both moved_entry_cmp() and >> get_string_hash()) before starting to iterate over the bytes from >> the beginning, no? > > Good point. > >>> + >>> + retval = **cp; >> >> The char could be signed, and byte 0xff may become indistinguishable >> from the EOF (i.e. -1) you returned earlier. > > Ah, I messed up there. I think EOF is wrong, too. > So maybe we'll just return 256 to indicate the end of memory chunk > to not have to deal with signedness I would just say that next_byte() returns -1 (at end of string) or 0-255 if it is returning a byte that matters.