summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <[email protected]>2013-03-08 07:09:44 -0800
committerVicent Martí <[email protected]>2013-03-08 07:09:44 -0800
commit78d105f862f117bcb9dd880dfa7b01a9e2060410 (patch)
tree372d9bd2553d0b84366d74e3eb9232f649b534d0
parentb57c792bf35630ba4f73388be28966ebac404432 (diff)
parent62a16395b17460887747602a4184372a0c9a6d6f (diff)
Merge pull request #9 from carlosmn/nil-oid
Oid: make sure not to dereference a NULL git_oid
-rw-r--r--git.go4
-rw-r--r--reference_test.go12
2 files changed, 16 insertions, 0 deletions
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")
}