diff --git a/git.go b/git.go index 84716e3..68712d4 100644 --- a/git.go +++ b/git.go @@ -26,6 +26,10 @@ type Oid struct { } func newOidFromC(coid *C.git_oid) *Oid { + if coid == nil { + return nil + } + oid := new(Oid) copy(oid.bytes[0:20], C.GoBytes(unsafe.Pointer(coid), 20)) return oid diff --git a/reference_test.go b/reference_test.go index ba32d81..8043833 100644 --- a/reference_test.go +++ b/reference_test.go @@ -43,10 +43,22 @@ func TestRefModification(t *testing.T) { checkFatal(t, err) checkRefType(t, ref, SYMBOLIC) + if target := ref.Target(); target != nil { + t.Fatalf("Expected nil *Oid, got %v", target) + } + ref, err = ref.Resolve() checkFatal(t, err) checkRefType(t, ref, OID) + if target := ref.Target(); target == nil { + t.Fatalf("Expected valid target got nil") + } + + if target := ref.SymbolicTarget(); target != "" { + t.Fatalf("Expected empty string, got %v", target) + } + if commitId.String() != ref.Target().String() { t.Fatalf("Wrong ref target") }