tree: keep tree receiver alive as long as dependent entry is used
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
This commit is contained in:
parent
432a164805
commit
fcb86e6f8e
15
tree.go
15
tree.go
|
@ -52,12 +52,13 @@ func (t Tree) EntryByName(filename string) *TreeEntry {
|
||||||
defer C.free(unsafe.Pointer(cname))
|
defer C.free(unsafe.Pointer(cname))
|
||||||
|
|
||||||
entry := C.git_tree_entry_byname(t.cast_ptr, cname)
|
entry := C.git_tree_entry_byname(t.cast_ptr, cname)
|
||||||
runtime.KeepAlive(t)
|
|
||||||
if entry == nil {
|
if entry == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return newTreeEntry(entry)
|
goEntry := newTreeEntry(entry)
|
||||||
|
runtime.KeepAlive(t)
|
||||||
|
return goEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
// EntryById performs a lookup for a tree entry with the given SHA value.
|
// EntryById performs a lookup for a tree entry with the given SHA value.
|
||||||
|
@ -71,13 +72,14 @@ func (t Tree) EntryById(id *Oid) *TreeEntry {
|
||||||
defer runtime.UnlockOSThread()
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
entry := C.git_tree_entry_byid(t.cast_ptr, id.toC())
|
entry := C.git_tree_entry_byid(t.cast_ptr, id.toC())
|
||||||
runtime.KeepAlive(t)
|
|
||||||
runtime.KeepAlive(id)
|
runtime.KeepAlive(id)
|
||||||
if entry == nil {
|
if entry == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return newTreeEntry(entry)
|
goEntry := newTreeEntry(entry)
|
||||||
|
runtime.KeepAlive(t)
|
||||||
|
return goEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
// EntryByPath looks up an entry by its full path, recursing into
|
// EntryByPath looks up an entry by its full path, recursing into
|
||||||
|
@ -102,12 +104,13 @@ func (t Tree) EntryByPath(path string) (*TreeEntry, error) {
|
||||||
|
|
||||||
func (t Tree) EntryByIndex(index uint64) *TreeEntry {
|
func (t Tree) EntryByIndex(index uint64) *TreeEntry {
|
||||||
entry := C.git_tree_entry_byindex(t.cast_ptr, C.size_t(index))
|
entry := C.git_tree_entry_byindex(t.cast_ptr, C.size_t(index))
|
||||||
runtime.KeepAlive(t)
|
|
||||||
if entry == nil {
|
if entry == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return newTreeEntry(entry)
|
goEntry := newTreeEntry(entry)
|
||||||
|
runtime.KeepAlive(t)
|
||||||
|
return goEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t Tree) EntryCount() uint64 {
|
func (t Tree) EntryCount() uint64 {
|
||||||
|
|
Loading…
Reference in New Issue