summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXTao <xutao881001@gmail.com>2014-01-26 17:07:39 +0800
committerXTao <xutao881001@gmail.com>2014-01-26 22:26:53 +0800
commit1cb5a8119445bb62c6868eb61649b9b901c855cb (patch)
treeb14c075bd725c4204b9e051575c2f27dd8c7c7cc /src
parentca55fc6356a5edd838ca03b82f3601bd94e8d750 (diff)
downloadlibgit2-1cb5a8119445bb62c6868eb61649b9b901c855cb.tar.gz
Fix write_object.
Diffstat (limited to 'src')
-rw-r--r--src/pack-objects.c8
-rw-r--r--src/zstream.c3
2 files changed, 6 insertions, 5 deletions
diff --git a/src/pack-objects.c b/src/pack-objects.c
index c4ed4dce3..1774b07dc 100644
--- a/src/pack-objects.c
+++ b/src/pack-objects.c
@@ -288,6 +288,7 @@ static int write_object(
git_odb_object *obj = NULL;
git_otype type;
unsigned char hdr[10], *zbuf = NULL;
+ void *delta_data = NULL;
void *data;
size_t hdr_len, zbuf_len = COMPRESS_BUFLEN, data_len;
ssize_t written;
@@ -295,10 +296,11 @@ static int write_object(
if (po->delta) {
if (po->delta_data)
- data = po->delta_data;
- else if ((error = get_delta(&data, pb->odb, po)) < 0)
+ delta_data = po->delta_data;
+ else if ((error = get_delta(&delta_data, pb->odb, po)) < 0)
goto done;
+ data = delta_data;
data_len = po->delta_size;
type = GIT_OBJ_REF_DELTA;
} else {
@@ -351,7 +353,7 @@ static int write_object(
}
if (po->delta)
- git__free(data);
+ git__free(delta_data);
}
if (po->delta_data) {
diff --git a/src/zstream.c b/src/zstream.c
index 7def0440b..0bca72ff3 100644
--- a/src/zstream.c
+++ b/src/zstream.c
@@ -70,7 +70,7 @@ int git_zstream_deflatebuf(git_buf *out, const void *in, size_t in_len)
int error = 0;
if ((error = git_zstream_init(&zstream)) < 0)
- goto done;
+ return error;
do {
if (out->asize - out->size < BUFFER_SIZE)
@@ -89,7 +89,6 @@ int git_zstream_deflatebuf(git_buf *out, const void *in, size_t in_len)
if (written < 0)
error = written;
-done:
git_zstream_free(&zstream);
return error;
}