summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blob.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/blob.go b/blob.go
index 4277127..58258fd 100644
--- a/blob.go
+++ b/blob.go
@@ -36,12 +36,21 @@ func (v *Blob) Contents() []byte {
func (repo *Repository) CreateBlobFromBuffer(data []byte) (*Oid, error) {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- oid := C.git_oid{}
- ecode := C.git_blob_create_frombuffer(&oid, repo.ptr, unsafe.Pointer(&data[0]), C.size_t(len(data)))
+
+ var id C.git_oid
+ var ptr unsafe.Pointer
+
+ if len(data) > 0 {
+ ptr = unsafe.Pointer(&data[0])
+ } else {
+ ptr = unsafe.Pointer(nil)
+ }
+
+ ecode := C.git_blob_create_frombuffer(&id, repo.ptr, ptr, C.size_t(len(data)))
if ecode < 0 {
return nil, MakeGitError(ecode)
}
- return newOidFromC(&oid), nil
+ return newOidFromC(&id), nil
}
type BlobChunkCallback func(maxLen int) ([]byte, error)