summaryrefslogtreecommitdiff
path: root/walk.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2017-07-08 16:07:51 +0200
committerCarlos Martín Nieto <[email protected]>2017-07-08 16:07:51 +0200
commit55a1096141519a1f380d0702671cfe9bf90ec435 (patch)
tree4a9c1357f3682d4134318e73ef85aa172cbfbd48 /walk.go
parent7d29d6864474525c9853d86996d769a5459dc15d (diff)
Third round of keep-alive aditions
Diffstat (limited to 'walk.go')
-rw-r--r--walk.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/walk.go b/walk.go
index ab1de61..287edb6 100644
--- a/walk.go
+++ b/walk.go
@@ -34,6 +34,7 @@ func revWalkFromC(repo *Repository, c *C.git_revwalk) *RevWalk {
func (v *RevWalk) Reset() {
C.git_revwalk_reset(v.ptr)
+ runtime.KeepAlive(v)
}
func (v *RevWalk) Push(id *Oid) error {
@@ -41,6 +42,8 @@ func (v *RevWalk) Push(id *Oid) error {
defer runtime.UnlockOSThread()
ecode := C.git_revwalk_push(v.ptr, id.toC())
+ runtime.KeepAlive(v)
+ runtime.KeepAlive(id)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -55,6 +58,7 @@ func (v *RevWalk) PushGlob(glob string) error {
defer C.free(unsafe.Pointer(cstr))
ecode := C.git_revwalk_push_glob(v.ptr, cstr)
+ runtime.KeepAlive(v)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -69,6 +73,7 @@ func (v *RevWalk) PushRange(r string) error {
defer C.free(unsafe.Pointer(cstr))
ecode := C.git_revwalk_push_range(v.ptr, cstr)
+ runtime.KeepAlive(v)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -83,6 +88,7 @@ func (v *RevWalk) PushRef(r string) error {
defer C.free(unsafe.Pointer(cstr))
ecode := C.git_revwalk_push_ref(v.ptr, cstr)
+ runtime.KeepAlive(v)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -94,6 +100,7 @@ func (v *RevWalk) PushHead() (err error) {
defer runtime.UnlockOSThread()
ecode := C.git_revwalk_push_head(v.ptr)
+ runtime.KeepAlive(v)
if ecode < 0 {
err = MakeGitError(ecode)
}
@@ -105,6 +112,8 @@ func (v *RevWalk) Hide(id *Oid) error {
defer runtime.UnlockOSThread()
ecode := C.git_revwalk_hide(v.ptr, id.toC())
+ runtime.KeepAlive(v)
+ runtime.KeepAlive(id)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -119,6 +128,7 @@ func (v *RevWalk) HideGlob(glob string) error {
defer C.free(unsafe.Pointer(cstr))
ecode := C.git_revwalk_hide_glob(v.ptr, cstr)
+ runtime.KeepAlive(v)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -133,6 +143,7 @@ func (v *RevWalk) HideRef(r string) error {
defer C.free(unsafe.Pointer(cstr))
ecode := C.git_revwalk_hide_ref(v.ptr, cstr)
+ runtime.KeepAlive(v)
if ecode < 0 {
return MakeGitError(ecode)
}
@@ -144,6 +155,7 @@ func (v *RevWalk) HideHead() (err error) {
defer runtime.UnlockOSThread()
ecode := C.git_revwalk_hide_head(v.ptr)
+ runtime.KeepAlive(v)
if ecode < 0 {
err = MakeGitError(ecode)
}
@@ -155,6 +167,7 @@ func (v *RevWalk) Next(id *Oid) (err error) {
defer runtime.UnlockOSThread()
ret := C.git_revwalk_next(id.toC(), v.ptr)
+ runtime.KeepAlive(v)
switch {
case ret < 0:
err = MakeGitError(ret)
@@ -192,14 +205,15 @@ func (v *RevWalk) Iterate(fun RevWalkIterator) (err error) {
func (v *RevWalk) SimplifyFirstParent() {
C.git_revwalk_simplify_first_parent(v.ptr)
+ runtime.KeepAlive(v)
}
func (v *RevWalk) Sorting(sm SortType) {
C.git_revwalk_sorting(v.ptr, C.uint(sm))
+ runtime.KeepAlive(v)
}
func (v *RevWalk) Free() {
-
runtime.SetFinalizer(v, nil)
C.git_revwalk_free(v.ptr)
}