[PATCH v2 1/4] add_excludes_from_file: clarify the bom skipping logic
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 16, 2015, 18:39 UTC
- Message-ID
- <1429209548-32297-2-git-send-email-gitster@pobox.com>
- In-Reply-To
- <1429209548-32297-1-git-send-email-gitster@pobox.com>
Even though the previous step shifts where the "entry" begins, we still iterate over the original buf[], which may begin with the UTF-8 BOM we are supposed to be skipping. At the end of the first line, the code grabs the contents of it starting at "entry", so there is nothing wrong per-se, but the logic looks really confused.
Instead, move the buf pointer and shrink its size, to truly pretend that UTF-8 BOM did not exist in the input.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- dir.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/dir.c b/dir.c index 10c1f90..b5bb389 100644 --- a/dir.c +++ b/dir.c @@ -576,10 +576,11 @@ int add_excludes_from_file_to_list(const char *fname, el->filebuf = buf; - if (size >= 3 && !memcmp(buf, utf8_bom, 3)) - entry = buf + 3; - else - entry = buf; + if (size >= 3 && !memcmp(buf, utf8_bom, 3)) { + buf += 3; + size -= 3; + } + entry = buf; for (i = 0; i < size; i++) { if (buf[i] == '\n') {
-- 2.4.0-rc2-171-g98ddf7f