summaryrefslogtreecommitdiff
path: root/repository.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2014-05-26 09:28:07 +0200
committerCarlos Martín Nieto <[email protected]>2014-05-26 09:28:07 +0200
commit8a73c75f1a68f2855d03e6d2ce45c95c414aa71a (patch)
tree967dae543c50f926ad728be38ffeaa3fefda7147 /repository.go
parentf953d4e5c7c676cd3b3ee797fedce8823b5c930c (diff)
Keep a pointer to the repository in the objects and references
Otherwise, the garbage collector might decide it's a good idea to throw away the repository instance while the C object still has a pointer to it. Hilarity ensues.
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go14
1 files changed, 7 insertions, 7 deletions
diff --git a/repository.go b/repository.go
index 5ae10f2..2354f99 100644
--- a/repository.go
+++ b/repository.go
@@ -130,7 +130,7 @@ func (v *Repository) lookupType(id *Oid, t ObjectType) (Object, error) {
return nil, MakeGitError(ret)
}
- return allocObject(ptr), nil
+ return allocObject(ptr, v), nil
}
func (v *Repository) Lookup(id *Oid) (Object, error) {
@@ -177,7 +177,7 @@ func (v *Repository) LookupReference(name string) (*Reference, error) {
return nil, MakeGitError(ecode)
}
- return newReferenceFromC(ptr), nil
+ return newReferenceFromC(ptr, v), nil
}
func (v *Repository) Head() (*Reference, error) {
@@ -191,7 +191,7 @@ func (v *Repository) Head() (*Reference, error) {
return nil, MakeGitError(ecode)
}
- return newReferenceFromC(ptr), nil
+ return newReferenceFromC(ptr, v), nil
}
func (v *Repository) SetHead(refname string, sig *Signature, msg string) error {
@@ -262,7 +262,7 @@ func (v *Repository) CreateReference(name string, id *Oid, force bool, sig *Sign
return nil, MakeGitError(ecode)
}
- return newReferenceFromC(ptr), nil
+ return newReferenceFromC(ptr, v), nil
}
func (v *Repository) CreateSymbolicReference(name, target string, force bool, sig *Signature, msg string) (*Reference, error) {
@@ -293,7 +293,7 @@ func (v *Repository) CreateSymbolicReference(name, target string, force bool, si
return nil, MakeGitError(ecode)
}
- return newReferenceFromC(ptr), nil
+ return newReferenceFromC(ptr, v), nil
}
func (v *Repository) Walk() (*RevWalk, error) {
@@ -450,7 +450,7 @@ func (v *Repository) RevparseSingle(spec string) (Object, error) {
return nil, MakeGitError(ecode)
}
- return allocObject(ptr), nil
+ return allocObject(ptr, v), nil
}
// EnsureLog ensures that there is a reflog for the given reference
@@ -501,5 +501,5 @@ func (v *Repository) DwimReference(name string) (*Reference, error) {
return nil, MakeGitError(ret)
}
- return newReferenceFromC(ptr), nil
+ return newReferenceFromC(ptr, v), nil
}