Merge pull request #9 from carlosmn/nil-oid
Oid: make sure not to dereference a NULL git_oid
This commit is contained in:
commit
78d105f862
4
git.go
4
git.go
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue