From 55a1096141519a1f380d0702671cfe9bf90ec435 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Sat, 8 Jul 2017 16:07:51 +0200 Subject: Third round of keep-alive aditions --- walk.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'walk.go') 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) } -- cgit v1.2.3