diff --git a/reference.go b/reference.go index 701fb07..c86f97e 100644 --- a/reference.go +++ b/reference.go @@ -489,6 +489,11 @@ func ReferenceIsValidName(name string) bool { return false } +const ( + // This should match GIT_REFNAME_MAX in src/refs.h + refnameMaxLength = 1024 +) + type ReferenceFormat uint const ( @@ -509,7 +514,7 @@ func ReferenceNormalizeName(name string, flags ReferenceFormat) (string, error) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) - bufSize := C.size_t(1024) + bufSize := C.size_t(refnameMaxLength) buf := (*C.char)(C.malloc(bufSize)) defer C.free(unsafe.Pointer(buf)) diff --git a/reference_test.go b/reference_test.go index 0b02f55..e42db41 100644 --- a/reference_test.go +++ b/reference_test.go @@ -231,14 +231,14 @@ func TestReferenceNormalizeName(t *testing.T) { checkFatal(t, err) if ref != "refs/heads/master" { - t.Errorf("ReferenceNormalizeName(%q) = %q; want %q", "refs/heads//master", ref, want) + t.Errorf("ReferenceNormalizeName(%q) = %q; want %q", "refs/heads//master", ref, "refs/heads/master") } ref, err = ReferenceNormalizeName("master", ReferenceFormatAllowOnelevel|ReferenceFormatRefspecShorthand) checkFatal(t, err) if ref != "master" { - t.Errorf("master should be normalized correctly") + t.Errorf("ReferenceNormalizeName(%q) = %q; want %q", "master", ref, "master") } ref, err = ReferenceNormalizeName("foo^", ReferenceFormatNormal)