Merge pull request #9 from carlosmn/nil-oid

Oid: make sure not to dereference a NULL git_oid
This commit is contained in:
Vicent Martí 2013-03-08 07:09:44 -08:00
commit 78d105f862
2 changed files with 16 additions and 0 deletions

4
git.go
View File

@ -26,6 +26,10 @@ type Oid struct {
} }
func newOidFromC(coid *C.git_oid) *Oid { func newOidFromC(coid *C.git_oid) *Oid {
if coid == nil {
return nil
}
oid := new(Oid) oid := new(Oid)
copy(oid.bytes[0:20], C.GoBytes(unsafe.Pointer(coid), 20)) copy(oid.bytes[0:20], C.GoBytes(unsafe.Pointer(coid), 20))
return oid return oid

View File

@ -43,10 +43,22 @@ func TestRefModification(t *testing.T) {
checkFatal(t, err) checkFatal(t, err)
checkRefType(t, ref, SYMBOLIC) checkRefType(t, ref, SYMBOLIC)
if target := ref.Target(); target != nil {
t.Fatalf("Expected nil *Oid, got %v", target)
}
ref, err = ref.Resolve() ref, err = ref.Resolve()
checkFatal(t, err) checkFatal(t, err)
checkRefType(t, ref, OID) 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() { if commitId.String() != ref.Target().String() {
t.Fatalf("Wrong ref target") t.Fatalf("Wrong ref target")
} }