summaryrefslogtreecommitdiff
path: root/odb.go
diff options
context:
space:
mode:
authorIan Lance Taylor <[email protected]>2016-01-07 18:37:46 -0800
committerIan Lance Taylor <[email protected]>2016-01-07 18:37:46 -0800
commit42b11d403d91e25754fe60c63c26371fbb7a89a9 (patch)
tree8e5a0c18fb97a3d6b4272640d5a6104a73a4f0df /odb.go
parent4ee13db86de9321cbea21c04c8608fb8f71735f3 (diff)
handles, merge, odb: changes for Go 1.6 pointer passing rules
See http://tip.golang.org/cmd/cgo/#hdr-Passing_pointers .
Diffstat (limited to 'odb.go')
-rw-r--r--odb.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/odb.go b/odb.go
index b15851f..8e8fba0 100644
--- a/odb.go
+++ b/odb.go
@@ -61,12 +61,13 @@ func (v *Odb) Exists(oid *Oid) bool {
func (v *Odb) Write(data []byte, otype ObjectType) (oid *Oid, err error) {
oid = new(Oid)
- hdr := (*reflect.SliceHeader)(unsafe.Pointer(&data))
+ cstr := C.CString(string(data))
+ defer C.free(unsafe.Pointer(cstr))
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- ret := C.git_odb_write(oid.toC(), v.ptr, unsafe.Pointer(hdr.Data), C.size_t(hdr.Len), C.git_otype(otype))
+ ret := C.git_odb_write(oid.toC(), v.ptr, unsafe.Pointer(cstr), C.size_t(len(data)), C.git_otype(otype))
if ret < 0 {
return nil, MakeGitError(ret)