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; }