Branko Čibej <brane <at> xbc.nu> writes:
> > Hi Daniel.
> >
> > I haven't looked at your patch v5 yet, because this Git diff doesn't
> > look quite right. How will this memcmp expression work properly if the
> > two strings being compared are different lengths?
> >> - if (translated_eol != NULL && DIFFERENT_EOL_STRINGS(eol_str, eol_str_len,
> >> - newline_buf, newline_len))
> >> + if (translated_eol != NULL &&
> >> + memcmp(eol_str,
> >> + newline_buf,
> >> + eol_str_len < newline_len ? eol_str_len : newline_len) != 0)
>
> Not very well, because it's prefix matching that doesn't actually take
> different string lengths into account and you can get false matches.
> e.g., if eol_str == '\r' (ancient mac mode) and newline_bug == '\r\n'
> ... what you want is more like:
>
> if (translated_eol != NULL &&
> (eol_str_len != newline_len ||
> memcmp(eol_str, newline_buff, eol_str_len) != 0))
>
Ack! I didn't see your message until now. Yes, you are right.
Attached is version 5.2 of the patch.
Received on 2010-12-20 01:23:20 CET