Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > diff --git a/diff.c b/diff.c > index 21e61af..e92db5c 100644 > --- a/diff.c > +++ b/diff.c > @@ -1170,13 +1170,19 @@ static void diff_filespec_check_attr(struct diff_filespec *one) > one->is_binary = 0; > one->funcname_pattern_ident = NULL; > > + if (!one->data && DIFF_FILE_VALID(one)) > + diff_populate_filespec(one, 0); > + > + if (one->data) > + one->is_binary = buffer_is_binary(one->data, one->size); > + > if (!git_checkattr(one->path, 1, &attr_diff_check)) { > const char *value; > > /* binaryness */ > value = attr_diff_check.value; > if (ATTR_TRUE(value)) > - ; > + one->is_binary = 0; I wanted to make sure we do not have to read data and run buffer_is_binary() when attribute says we do not have to. I wonder why moving the code around makes the difference. > else if (ATTR_FALSE(value)) > one->is_binary = 1; > > @@ -1186,13 +1192,6 @@ static void diff_filespec_check_attr(struct diff_filespec *one) > else > one->funcname_pattern_ident = value; > } > - > - if (!one->data && DIFF_FILE_VALID(one)) > - diff_populate_filespec(one, 0); > - > - if (one->data) > - one->is_binary = buffer_is_binary(one->data, one->size); > - > } Ah, I see, because these are done unconditionally. That was silly of me. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html