(obj *Object, kind ObjectType)
| 89 | } |
| 90 | |
| 91 | func dupObject(obj *Object, kind ObjectType) (*C.git_object, error) { |
| 92 | if obj.Type() != kind { |
| 93 | return nil, errors.New(fmt.Sprintf("object is not a %v", kind)) |
| 94 | } |
| 95 | |
| 96 | var cobj *C.git_object |
| 97 | |
| 98 | runtime.LockOSThread() |
| 99 | defer runtime.UnlockOSThread() |
| 100 | |
| 101 | err := C.git_object_dup(&cobj, obj.ptr) |
| 102 | runtime.KeepAlive(obj) |
| 103 | if err < 0 { |
| 104 | return nil, MakeGitError(err) |
| 105 | } |
| 106 | |
| 107 | return cobj, nil |
| 108 | } |
| 109 | |
| 110 | func allocTree(ptr *C.git_tree, repo *Repository) *Tree { |
| 111 | tree := &Tree{ |