Commit cfa6465c by nulltoken

blob: do not create temp files in the current path

 - make sure temporary streamed blobs are created under the
.git/objects folder and not in the current path, whatever it is.

 - do not make the name of the temp file depend on the hintpath.
parent c497a63b
...@@ -255,11 +255,19 @@ int git_blob_create_fromchunks( ...@@ -255,11 +255,19 @@ int git_blob_create_fromchunks(
int error = -1, read_bytes; int error = -1, read_bytes;
char *content = NULL; char *content = NULL;
git_filebuf file = GIT_FILEBUF_INIT; git_filebuf file = GIT_FILEBUF_INIT;
git_buf path = GIT_BUF_INIT;
if (git_buf_join_n(
&path, '/', 3,
git_repository_path(repo),
GIT_OBJECTS_DIR,
"streamed") < 0)
goto cleanup;
content = git__malloc(BUFFER_SIZE); content = git__malloc(BUFFER_SIZE);
GITERR_CHECK_ALLOC(content); GITERR_CHECK_ALLOC(content);
if (git_filebuf_open(&file, hintpath == NULL ? "streamed" : hintpath, GIT_FILEBUF_TEMPORARY) < 0) if (git_filebuf_open(&file, git_buf_cstr(&path), GIT_FILEBUF_TEMPORARY) < 0)
goto cleanup; goto cleanup;
while (1) { while (1) {
...@@ -283,6 +291,7 @@ int git_blob_create_fromchunks( ...@@ -283,6 +291,7 @@ int git_blob_create_fromchunks(
error = blob_create_internal(oid, repo, file.path_lock, hintpath, hintpath != NULL); error = blob_create_internal(oid, repo, file.path_lock, hintpath, hintpath != NULL);
cleanup: cleanup:
git_buf_free(&path);
git_filebuf_cleanup(&file); git_filebuf_cleanup(&file);
git__free(content); git__free(content);
return error; return error;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment