summaryrefslogtreecommitdiff
path: root/tree.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2017-07-08 16:51:22 +0200
committerGitHub <[email protected]>2017-07-08 16:51:22 +0200
commit08db2e2c167404c5ed9be0fc1c995e41bad479bb (patch)
tree4a9c1357f3682d4134318e73ef85aa172cbfbd48 /tree.go
parent29c0b730076fe402c22ea3e3a11a7ed541663637 (diff)
parent55a1096141519a1f380d0702671cfe9bf90ec435 (diff)
Merge pull request #393 from libgit2/cmn/keepalive-all-the-things
KeepAlive all the things
Diffstat (limited to 'tree.go')
-rw-r--r--tree.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/tree.go b/tree.go
index 27dd63d..f5cbd78 100644
--- a/tree.go
+++ b/tree.go
@@ -48,6 +48,7 @@ func (t Tree) EntryByName(filename string) *TreeEntry {
defer C.free(unsafe.Pointer(cname))
entry := C.git_tree_entry_byname(t.cast_ptr, cname)
+ runtime.KeepAlive(t)
if entry == nil {
return nil
}
@@ -66,6 +67,8 @@ func (t Tree) EntryById(id *Oid) *TreeEntry {
defer runtime.UnlockOSThread()
entry := C.git_tree_entry_byid(t.cast_ptr, id.toC())
+ runtime.KeepAlive(t)
+ runtime.KeepAlive(id)
if entry == nil {
return nil
}
@@ -84,6 +87,7 @@ func (t Tree) EntryByPath(path string) (*TreeEntry, error) {
defer runtime.UnlockOSThread()
ret := C.git_tree_entry_bypath(&entry, t.cast_ptr, cpath)
+ runtime.KeepAlive(t)
if ret < 0 {
return nil, MakeGitError(ret)
}
@@ -94,6 +98,7 @@ func (t Tree) EntryByPath(path string) (*TreeEntry, error) {
func (t Tree) EntryByIndex(index uint64) *TreeEntry {
entry := C.git_tree_entry_byindex(t.cast_ptr, C.size_t(index))
+ runtime.KeepAlive(t)
if entry == nil {
return nil
}
@@ -103,6 +108,7 @@ func (t Tree) EntryByIndex(index uint64) *TreeEntry {
func (t Tree) EntryCount() uint64 {
num := C.git_tree_entrycount(t.cast_ptr)
+ runtime.KeepAlive(t)
return uint64(num)
}
@@ -132,7 +138,7 @@ func (t Tree) Walk(callback TreeWalkCallback) error {
C.GIT_TREEWALK_PRE,
ptr,
)
-
+ runtime.KeepAlive(t)
if err < 0 {
return MakeGitError(err)
}
@@ -158,6 +164,8 @@ func (v *TreeBuilder) Insert(filename string, id *Oid, filemode Filemode) error
defer runtime.UnlockOSThread()
err := C.git_treebuilder_insert(nil, v.ptr, cfilename, id.toC(), C.git_filemode_t(filemode))
+ runtime.KeepAlive(v)
+ runtime.KeepAlive(id)
if err < 0 {
return MakeGitError(err)
}
@@ -173,6 +181,7 @@ func (v *TreeBuilder) Remove(filename string) error {
defer runtime.UnlockOSThread()
err := C.git_treebuilder_remove(v.ptr, cfilename)
+ runtime.KeepAlive(v)
if err < 0 {
return MakeGitError(err)
}
@@ -187,7 +196,7 @@ func (v *TreeBuilder) Write() (*Oid, error) {
defer runtime.UnlockOSThread()
err := C.git_treebuilder_write(oid.toC(), v.ptr)
-
+ runtime.KeepAlive(v)
if err < 0 {
return nil, MakeGitError(err)
}