diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-04-16 11:26:29 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-04-16 11:26:29 -0700 |
commit | cb0abea87017559e1db3721a7e6d89a336d845e9 (patch) | |
tree | 37413370f4baadc61da16bd60cd4032381c7e949 /dir.c | |
parent | 245e1c196dab226675a02a8caca5a83373f5e4d4 (diff) | |
download | git-cb0abea87017559e1db3721a7e6d89a336d845e9.tar.gz |
add_excludes_from_file: clarify the bom skipping logic
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>
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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') { |