From f503d918aa62cc995aa8a500106b1d0edcc82bd1 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Fri, 24 Feb 2017 22:55:14 +0100 Subject: [PATCH 1/2] Fix memleaks in Tree.EntryBy(Name/Path/Index), fixes #313 --- tree.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tree.go b/tree.go index aad2c8d..a4b350b 100644 --- a/tree.go +++ b/tree.go @@ -51,6 +51,7 @@ func (t Tree) EntryByName(filename string) *TreeEntry { if entry == nil { return nil } + defer C.git_tree_entry_free(entry) return newTreeEntry(entry) } @@ -69,6 +70,7 @@ func (t Tree) EntryByPath(path string) (*TreeEntry, error) { if ret < 0 { return nil, MakeGitError(ret) } + defer C.git_tree_entry_free(entry) return newTreeEntry(entry), nil } @@ -78,6 +80,7 @@ func (t Tree) EntryByIndex(index uint64) *TreeEntry { if entry == nil { return nil } + defer C.git_tree_entry_free(entry) return newTreeEntry(entry) } From ee2a0238687f72c4319cb599cbcdbee064ad3508 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Sat, 25 Feb 2017 02:13:57 +0100 Subject: [PATCH 2/2] Remove unnecessary C.git_tree_entry_free calls ... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per the docs, these entries belong to the tree and don’t need to be freed by the caller: * https://libgit2.github.com/libgit2/#HEAD/group/tree/git_tree_entry_bynam e --- tree.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/tree.go b/tree.go index a4b350b..cdb5581 100644 --- a/tree.go +++ b/tree.go @@ -51,7 +51,6 @@ func (t Tree) EntryByName(filename string) *TreeEntry { if entry == nil { return nil } - defer C.git_tree_entry_free(entry) return newTreeEntry(entry) } @@ -80,7 +79,6 @@ func (t Tree) EntryByIndex(index uint64) *TreeEntry { if entry == nil { return nil } - defer C.git_tree_entry_free(entry) return newTreeEntry(entry) }