Handle packed refs with no trailing newline

I saw a repo in the wild today which had a master branch ref which was packed, but had no trailing newline. Git handled it fine, but libgit2 choked on it. Fix seems simple enough. If we don't see a newline, assume the end of the buffer is the end of the ref line.
This commit is contained in:
Scott J. Goldman 2013-01-05 00:46:39 -08:00
parent 7511d8b42d
commit ef82ff30f6

View File

@ -373,7 +373,7 @@ static int packed_parse_oid(
refname_end = memchr(refname_begin, '\n', buffer_end - refname_begin); refname_end = memchr(refname_begin, '\n', buffer_end - refname_begin);
if (refname_end == NULL) if (refname_end == NULL)
goto corrupt; refname_end = buffer_end;
if (refname_end[-1] == '\r') if (refname_end[-1] == '\r')
refname_end--; refname_end--;