diff options
| author | Carlos Martín Nieto <[email protected]> | 2014-05-26 09:28:07 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2014-05-26 09:28:07 +0200 |
| commit | 8a73c75f1a68f2855d03e6d2ce45c95c414aa71a (patch) | |
| tree | 967dae543c50f926ad728be38ffeaa3fefda7147 /repository.go | |
| parent | f953d4e5c7c676cd3b3ee797fedce8823b5c930c (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.go | 14 |
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 } |
