See lines 59-60 from 44b1ff4c12/src/filter.c which contain a couple of lines of code to ignore an EOF at the end of a file when detecting if it is a text file or not. These came from this contribution that Dmitry made to core Git back in 2008 (f9dd4bf4e5) which was committed by Junio.
Dmitry gave his permission for these changes to be included in LibGit2 as well via email to vmg and myself
Depending on the operation, we need to consider gitattributes
in both the work dir and the index. This adds a parameter to
all of the gitattributes related functions that allows user
control of attribute reading behavior (i.e. prefer workdir,
prefer index, only use index).
This fix also covers allowing us to check attributes (and
hence do diff and status) on bare repositories.
This was a somewhat larger change that I hoped because it had
to change the cache key used for gitattributes files.