summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Martí <tanoku@gmail.com>2011-06-02 15:12:37 -0700
committerVicent Martí <tanoku@gmail.com>2011-06-02 15:12:37 -0700
commit1e9b7a09ff3d16c3d7a132cfaacb9d68b253e924 (patch)
tree831500d405e88635536fc8b91721df31568e5941 /src
parent7107b599d75978a7526ac40592ad7b53035325b0 (diff)
parent1d1735fe03a53482c6545252bd567555d5d9b487 (diff)
downloadlibgit2-1e9b7a09ff3d16c3d7a132cfaacb9d68b253e924.tar.gz
Merge pull request #144 from nordsturm/fix_fakewstream
Fix fake wstream write
Diffstat (limited to 'src')
-rw-r--r--src/blob.c5
-rw-r--r--src/odb.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/blob.c b/src/blob.c
index 75eda448e..6ab58d6b2 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -64,7 +64,10 @@ int git_blob_create_frombuffer(git_oid *oid, git_repository *repo, const void *b
if ((error = git_odb_open_wstream(&stream, repo->db, len, GIT_OBJ_BLOB)) < GIT_SUCCESS)
return git__rethrow(error, "Failed to create blob");
- stream->write(stream, buffer, len);
+ if ((error = stream->write(stream, buffer, len)) < GIT_SUCCESS) {
+ stream->free(stream);
+ return error;
+ }
error = stream->finalize_write(oid, stream);
stream->free(stream);
diff --git a/src/odb.c b/src/odb.c
index 080dfa28c..1f3848ff0 100644
--- a/src/odb.c
+++ b/src/odb.c
@@ -170,7 +170,7 @@ static int fake_wstream__write(git_odb_stream *_stream, const char *data, size_t
{
fake_wstream *stream = (fake_wstream *)_stream;
- if (stream->written + len >= stream->size)
+ if (stream->written + len > stream->size)
return GIT_ENOMEM;
memcpy(stream->buffer + stream->written, data, len);