summaryrefslogtreecommitdiff
path: root/blob.go
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-04-04 00:26:22 -0700
committerJesse Ezell <[email protected]>2014-04-04 00:26:22 -0700
commit8319a792f3184714d8f2bfa562523d1a91a9392c (patch)
treec3914d4a38355f9145884c3a278b81fbb428ce46 /blob.go
parent5590078e6ff04be425b4a833adb44a0845c0b52f (diff)
parent9cd1d129bcd567ef65137783a603f8d898d8d933 (diff)
Merge remote-tracking branch 'libgit/master' into branch-iterator
Diffstat (limited to 'blob.go')
-rw-r--r--blob.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/blob.go b/blob.go
index ced2cb1..4277127 100644
--- a/blob.go
+++ b/blob.go
@@ -20,15 +20,16 @@ import (
type Blob struct {
gitObject
+ cast_ptr *C.git_blob
}
func (v *Blob) Size() int64 {
- return int64(C.git_blob_rawsize(v.ptr))
+ return int64(C.git_blob_rawsize(v.cast_ptr))
}
func (v *Blob) Contents() []byte {
- size := C.int(C.git_blob_rawsize(v.ptr))
- buffer := unsafe.Pointer(C.git_blob_rawcontent(v.ptr))
+ size := C.int(C.git_blob_rawsize(v.cast_ptr))
+ buffer := unsafe.Pointer(C.git_blob_rawcontent(v.cast_ptr))
return C.GoBytes(buffer, size)
}
@@ -55,13 +56,13 @@ func blobChunkCb(buffer *C.char, maxLen C.size_t, payload unsafe.Pointer) int {
data := (*BlobCallbackData)(payload)
goBuf, err := data.Callback(int(maxLen))
if err == io.EOF {
- return 1
+ return 0
} else if err != nil {
data.Error = err
return -1
}
- C.memcpy(unsafe.Pointer(buffer), unsafe.Pointer(&goBuf), C.size_t(len(goBuf)))
- return 0
+ C.memcpy(unsafe.Pointer(buffer), unsafe.Pointer(&goBuf[0]), C.size_t(len(goBuf)))
+ return len(goBuf)
}
func (repo *Repository) CreateBlobFromChunks(hintPath string, callback BlobChunkCallback) (*Oid, error) {