diff --git a/src/filebuf.c b/src/filebuf.c index 1fbbaa3d4..6d398a7db 100644 --- a/src/filebuf.c +++ b/src/filebuf.c @@ -97,7 +97,7 @@ GIT_INLINE(int) flush_buffer(git_filebuf *file) return result; } -static int write_normal(git_filebuf *file, const void *source, size_t len) +static int write_normal(git_filebuf *file, void *source, size_t len) { int result = 0; @@ -110,7 +110,7 @@ static int write_normal(git_filebuf *file, const void *source, size_t len) return result; } -static int write_deflate(git_filebuf *file, const void *source, size_t len) +static int write_deflate(git_filebuf *file, void *source, size_t len) { int result = Z_OK; z_stream *zs = &file->zs; @@ -315,24 +315,13 @@ int git_filebuf_write(git_filebuf *file, const void *buff, size_t len) return GIT_SUCCESS; } - /* flush the cache if it doesn't fit */ - if (file->buf_pos > 0) { - add_to_cache(file, buf, space_left); + add_to_cache(file, buf, space_left); - if ((error = flush_buffer(file)) < GIT_SUCCESS) - return git__rethrow(error, "Failed to write to buffer"); + if ((error = flush_buffer(file)) < GIT_SUCCESS) + return git__rethrow(error, "Failed to write to buffer"); - len -= space_left; - buf += space_left; - } - - /* write too-large chunks immediately */ - if (len > file->buf_size) { - error = file->write(file, buf, len); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to write to buffer"); - return GIT_SUCCESS; - } + len -= space_left; + buf += space_left; } } diff --git a/src/filebuf.h b/src/filebuf.h index 1567b115c..9154cabcd 100644 --- a/src/filebuf.h +++ b/src/filebuf.h @@ -22,8 +22,7 @@ struct git_filebuf { char *path_original; char *path_lock; - int (*write)(struct git_filebuf *file, - const void *source, size_t len); + int (*write)(struct git_filebuf *file, void *source, size_t len); git_hash_ctx *digest;