summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-04-16 11:26:29 -0700
committerJunio C Hamano <gitster@pobox.com>2015-04-16 11:26:29 -0700
commitcb0abea87017559e1db3721a7e6d89a336d845e9 (patch)
tree37413370f4baadc61da16bd60cd4032381c7e949
parent245e1c196dab226675a02a8caca5a83373f5e4d4 (diff)
downloadgit-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>
-rw-r--r--dir.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/dir.c b/dir.c
index 10c1f903ef..b5bb38977b 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') {