summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blob.go15
-rwxr-xr-xscript/build-libgit2-static.sh1
m---------vendor/libgit20
3 files changed, 13 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)
diff --git a/script/build-libgit2-static.sh b/script/build-libgit2-static.sh
index b4d4241..5723721 100755
--- a/script/build-libgit2-static.sh
+++ b/script/build-libgit2-static.sh
@@ -5,6 +5,7 @@ set -ex
VENDORED_PATH=vendor/libgit2
cd $VENDORED_PATH &&
+mkdir -p install/lib &&
mkdir -p build &&
cd build &&
cmake -DTHREADSAFE=ON \
diff --git a/vendor/libgit2 b/vendor/libgit2
-Subproject 28f087c8642ff9c8dd6964e101e6d8539db6281
+Subproject b4d00c1d2466de3558a7cc6983dce4eb2ee9843