diff options
| author | Vicent Martà <[email protected]> | 2013-03-05 16:59:40 -0800 |
|---|---|---|
| committer | Vicent Martà <[email protected]> | 2013-03-05 16:59:40 -0800 |
| commit | 9b6d570748ae51bf38e3192f9a5de45bc68b23c6 (patch) | |
| tree | d4494ed38a76fa9c69f4fc00513340ff0096f980 /tree.go | |
| parent | 2885e3fe0cc403514d0ade13bae5f430b2e9252e (diff) | |
| parent | d43561fbf711896f5ce33f409c6000946416a82b (diff) | |
Merge pull request #3 from carlosmn/finalizers
Free Git objects via finalizers or manually
Diffstat (limited to 'tree.go')
| -rw-r--r-- | tree.go | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -9,6 +9,7 @@ extern int _go_git_treewalk(git_tree *tree, git_treewalk_mode mode, void *ptr); import "C" import ( + "runtime" "unsafe" ) @@ -31,6 +32,7 @@ func newTreeEntry(entry *C.git_tree_entry) *TreeEntry { } func (t *Tree) Free() { + runtime.SetFinalizer(t, nil) C.git_tree_free(t.ptr) } @@ -40,6 +42,8 @@ func TreeLookup(repo *Repository, oid *Oid) (*Tree, error) { if err < 0 { return nil, LastError() } + + runtime.SetFinalizer(tree, (*Tree).Free) return tree, nil } @@ -99,7 +103,8 @@ type TreeBuilder struct { repo *Repository } -func freeTreeBuilder(v *TreeBuilder) { +func (v *TreeBuilder) Free() { + runtime.SetFinalizer(v, nil) C.git_treebuilder_free(v.ptr) } |
