summaryrefslogtreecommitdiff
path: root/odb.go
diff options
context:
space:
mode:
authorVicent Martí <[email protected]>2013-03-05 16:59:40 -0800
committerVicent Martí <[email protected]>2013-03-05 16:59:40 -0800
commit9b6d570748ae51bf38e3192f9a5de45bc68b23c6 (patch)
treed4494ed38a76fa9c69f4fc00513340ff0096f980 /odb.go
parent2885e3fe0cc403514d0ade13bae5f430b2e9252e (diff)
parentd43561fbf711896f5ce33f409c6000946416a82b (diff)
Merge pull request #3 from carlosmn/finalizers
Free Git objects via finalizers or manually
Diffstat (limited to 'odb.go')
-rw-r--r--odb.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/odb.go b/odb.go
index 5688080..6370999 100644
--- a/odb.go
+++ b/odb.go
@@ -49,7 +49,7 @@ func (v *Odb) Read(oid *Oid) (obj *OdbObject, err error) {
return nil, LastError()
}
- runtime.SetFinalizer(obj, freeOdbObject)
+ runtime.SetFinalizer(obj, (*OdbObject).Free)
return
}
@@ -57,8 +57,9 @@ type OdbObject struct {
ptr *C.git_odb_object
}
-func freeOdbObject(obj *OdbObject) {
- C.git_odb_object_free(obj.ptr)
+func (v *OdbObject) Free() {
+ runtime.SetFinalizer(v, nil)
+ C.git_odb_object_free(v.ptr)
}
func (v *OdbObject) Type() int {