File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed
Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -93,19 +93,25 @@ type TreeWalkCallback func(string, *TreeEntry) int
9393func CallbackGitTreeWalk (_root unsafe.Pointer , _entry unsafe.Pointer , ptr unsafe.Pointer ) C.int {
9494 root := C .GoString ((* C .char )(_root ))
9595 entry := (* C .git_tree_entry )(_entry )
96- callback := * (* TreeWalkCallback )(ptr )
9796
98- return C .int (callback (root , newTreeEntry (entry )))
97+ if callback , ok := pointerHandles .Get (ptr ).(TreeWalkCallback ); ok {
98+ return C .int (callback (root , newTreeEntry (entry )))
99+ } else {
100+ return C .int (- 1 )
101+ }
99102}
100103
101104func (t Tree ) Walk (callback TreeWalkCallback ) error {
102105 runtime .LockOSThread ()
103106 defer runtime .UnlockOSThread ()
104107
108+ ptr := pointerHandles .Track (callback )
109+ defer pointerHandles .Untrack (ptr )
110+
105111 err := C ._go_git_treewalk (
106112 t .cast_ptr ,
107113 C .GIT_TREEWALK_PRE ,
108- unsafe . Pointer ( & callback ) ,
114+ ptr ,
109115 )
110116
111117 if err < 0 {
You can’t perform that action at this time.
0 commit comments