summaryrefslogtreecommitdiff
path: root/merge.go
diff options
context:
space:
mode:
Diffstat (limited to 'merge.go')
-rw-r--r--merge.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/merge.go b/merge.go
index 9feb88a..9c51a85 100644
--- a/merge.go
+++ b/merge.go
@@ -225,9 +225,8 @@ type MergeFileResult struct {
Automergeable bool
Path string
Mode uint
- Contents []byte // Contents of file, will be invalid after Free
-
- ptr *C.git_merge_file_result
+ Contents []byte
+ ptr *C.git_merge_file_result
}
func newMergeFileResultFromC(c *C.git_merge_file_result) *MergeFileResult {
@@ -236,11 +235,14 @@ func newMergeFileResultFromC(c *C.git_merge_file_result) *MergeFileResult {
path = C.GoString(c.path)
}
+ originalBytes := C.GoBytes(unsafe.Pointer(c.ptr), C.int(c.len))
+ gobytes := make([]byte, len(originalBytes))
+ copy(gobytes, originalBytes)
r := &MergeFileResult{
Automergeable: c.automergeable != 0,
Path: path,
Mode: uint(c.mode),
- Contents: C.GoBytes(unsafe.Pointer(c.ptr), C.int(c.len)),
+ Contents: gobytes,
ptr: c,
}