summaryrefslogtreecommitdiff
path: root/merge.go
diff options
context:
space:
mode:
authorjoseferminj <[email protected]>2014-11-08 19:07:21 -0500
committerjoseferminj <[email protected]>2014-11-08 19:07:21 -0500
commitff65faa082f9eca3239da25277e1eb15bd3ac9ec (patch)
tree3281d6e682e26e295f79c75699945bbe7e5b7a0a /merge.go
parent98299e65fbf1875a95c631c494dba0763ec543b3 (diff)
Fix MergeTrees func to accept nil as ancestor parameter
Diffstat (limited to 'merge.go')
-rw-r--r--merge.go13
1 files changed, 9 insertions, 4 deletions
diff --git a/merge.go b/merge.go
index 2bc4e47..93ac71b 100644
--- a/merge.go
+++ b/merge.go
@@ -206,8 +206,11 @@ func (r *Repository) MergeTrees(ancestor *Tree, ours *Tree, theirs *Tree, option
copts := options.toC()
idx := &Index{}
-
- ret := C.git_merge_trees(&idx.ptr, r.ptr, ancestor.cast_ptr, ours.cast_ptr, theirs.cast_ptr, copts)
+ var ancestor_ptr *C.git_tree
+ if ancestor != nil {
+ ancestor_ptr = ancestor.cast_ptr
+ }
+ ret := C.git_merge_trees(&idx.ptr, r.ptr, ancestor_ptr, ours.cast_ptr, theirs.cast_ptr, copts)
if ret < 0 {
return nil, MakeGitError(ret)
}
@@ -273,8 +276,10 @@ type MergeFileInput struct {
// populate a C struct with merge file input, make sure to use freeMergeFileInput to clean up allocs
func populateCMergeFileInput(c *C.git_merge_file_input, input MergeFileInput) {
c.path = C.CString(input.Path)
- c.ptr = (*C.char)(unsafe.Pointer(&input.Contents[0]))
- c.size = C.size_t(len(input.Contents))
+ if input.Contents != nil {
+ c.ptr = (*C.char)(unsafe.Pointer(&input.Contents[0]))
+ c.size = C.size_t(len(input.Contents))
+ }
c.mode = C.uint(input.Mode)
}