diff options
| author | Vicent Martà <vicent@github.com> | 2012-12-10 06:55:59 -0800 |
|---|---|---|
| committer | Vicent Martà <vicent@github.com> | 2012-12-10 06:55:59 -0800 |
| commit | 22bcf86c5a4a5bf5bdd56d55b2ea7dbbb717e90f (patch) | |
| tree | 127cb3c321e807b88d86d71e9b182184ded6f0b8 /src | |
| parent | cbad0270ca064830ca1b3f2085150cf69b5c8e6c (diff) | |
| parent | 6481a68d49ad2e975dd0f3297d8058dcd3fd7d62 (diff) | |
| download | libgit2-22bcf86c5a4a5bf5bdd56d55b2ea7dbbb717e90f.tar.gz | |
Merge pull request #1126 from carlosmn/indexer-buffer
indexer: move the temporary buffers into the indexer object
Diffstat (limited to 'src')
| -rw-r--r-- | src/indexer.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/indexer.c b/src/indexer.c index f78ca5774..2fb780412 100644 --- a/src/indexer.c +++ b/src/indexer.c @@ -55,6 +55,7 @@ struct git_indexer_stream { git_oid hash; git_transfer_progress_callback progress_cb; void *progress_payload; + char objbuf[8*1024]; }; struct delta_info { @@ -204,18 +205,17 @@ static void hash_header(git_hash_ctx *ctx, git_off_t len, git_otype type) git_hash_update(ctx, buffer, hdrlen); } -static int hash_object_stream(git_hash_ctx *ctx, git_packfile_stream *stream) +static int hash_object_stream(git_indexer_stream *idx, git_packfile_stream *stream) { - char buffer[8*1024]; ssize_t read; - assert(ctx && stream); + assert(idx && stream); do { - if ((read = git_packfile_stream_read(stream, buffer, sizeof(buffer))) < 0) + if ((read = git_packfile_stream_read(stream, idx->objbuf, sizeof(idx->objbuf))) < 0) break; - git_hash_update(ctx, buffer, read); + git_hash_update(&idx->hash_ctx, idx->objbuf, read); } while (read > 0); if (read < 0) @@ -244,15 +244,14 @@ static int advance_delta_offset(git_indexer_stream *idx, git_otype type) } /* Read from the stream and discard any output */ -static int read_object_stream(git_packfile_stream *stream) +static int read_object_stream(git_indexer_stream *idx, git_packfile_stream *stream) { - char buffer[4*1024]; ssize_t read; assert(stream); do { - read = git_packfile_stream_read(stream, buffer, sizeof(buffer)); + read = git_packfile_stream_read(stream, idx->objbuf, sizeof(idx->objbuf)); } while (read > 0); if (read < 0) @@ -507,9 +506,9 @@ int git_indexer_stream_add(git_indexer_stream *idx, const void *data, size_t siz } if (idx->have_delta) { - error = read_object_stream(stream); + error = read_object_stream(idx, stream); } else { - error = hash_object_stream(&idx->hash_ctx, stream); + error = hash_object_stream(idx, stream); } idx->off = stream->curpos; |
