odb: avoid hashing twice in and edge case If none of the backends support direct writes and we must stream the whole file, we already know what the object's id should be; so use the stream's functions directly, bypassing the frontend's hashing and overwriting of our existing id.
diff --git a/src/odb.c b/src/odb.c
index d2be60f..21b46bf 100644
--- a/src/odb.c
+++ b/src/odb.c
@@ -864,8 +864,8 @@ int git_odb_write(
if ((error = git_odb_open_wstream(&stream, db, len, type)) != 0)
return error;
- git_odb_stream_write(stream, data, len);
- error = git_odb_stream_finalize_write(oid, stream);
+ stream->write(stream, data, len);
+ error = stream->finalize_write(stream, oid);
git_odb_stream_free(stream);
return error;