diff options
author | Vicent Martà <vicent@github.com> | 2012-10-22 10:39:40 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2012-10-22 10:39:40 -0700 |
commit | 0e19840800eb90de2b8673eb8baee75037df1b9b (patch) | |
tree | 0d4e00419db240ab0320482527274b66c1626cf5 | |
parent | c497a63bd6ac0f07b06b18e4891771fdbcd31dd6 (diff) | |
parent | cfa6465cc4e7eead98b8729c556e9172c2e08a79 (diff) | |
download | libgit2-0e19840800eb90de2b8673eb8baee75037df1b9b.tar.gz |
Merge pull request #1008 from nulltoken/fix/chunked_blob
blob: do not create temp files in the current path
-rw-r--r-- | src/blob.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/blob.c b/src/blob.c index 6137746e1..76d265faa 100644 --- a/src/blob.c +++ b/src/blob.c @@ -255,11 +255,19 @@ int git_blob_create_fromchunks( int error = -1, read_bytes; char *content = NULL; 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); 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; while (1) { @@ -283,6 +291,7 @@ int git_blob_create_fromchunks( error = blob_create_internal(oid, repo, file.path_lock, hintpath, hintpath != NULL); cleanup: + git_buf_free(&path); git_filebuf_cleanup(&file); git__free(content); return error; |