git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 087/104] hash_object: correction for zero length file

From
Sam Vilain <sam.vilain@catalyst.net.nz>
Date
May 26, 2010, 06:00 UTC
Message-ID
<1274853674-18521-87-git-send-email-sam.vilain@catalyst.net.nz>
In-Reply-To
<1274853674-18521-1-git-send-email-sam.vilain@catalyst.net.nz>
From: Dmitry Potapov <dpotapov@gmail.com>

The check whether size is zero was done after if size <= SMALL_FILE_SIZE, as result, zero size case was never triggered. Instead zero length file was treated as any other small file. This did not caused any problem, but if we have a special case for size equal to zero, it is better to make it work and avoid redundant malloc().

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 sha1_file.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index ff65328..1b551e4 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2448,6 +2448,8 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
 		else
 			ret = -1;
 		strbuf_release(&sbuf);
+	} else if (!size) {
+		ret = index_mem(sha1, NULL, size, write_object, type, path);
 	} else if (size <= SMALL_FILE_SIZE) {
 		char *buf = xmalloc(size);
 		if (size == read_in_full(fd, buf, size))
@@ -2456,12 +2458,11 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
 		else
 			ret = error("short read %s", strerror(errno));
 		free(buf);
-	} else if (size) {
+	} else {
 		void *buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
 		ret = index_mem(sha1, buf, size, write_object, type, path);
 		munmap(buf, size);
-	} else
-		ret = index_mem(sha1, NULL, size, write_object, type, path);
+	}
 	close(fd);
 	return ret;
 }
-- 
1.7.1.rc2.333.gb2668
Previous: Sam VilainNext: Sam Vilain
Message 6 of 23 in “tests: chmod +x t5150”
  1. 075/104 tests: chmod +x t5150Sam Vilain, May 26, 2010
  2. 076/104 t7604-merge-custom-message: shift expected output creationSam Vilain, May 26, 2010
  3. 082/104 fmt-merge-msg: add function to append shortlog onlySam Vilain, May 26, 2010
  4. 084/104 autocrlf: Make it work also for un-normalized repositoriesSam Vilain, May 26, 2010
  5. 086/104 gitweb: Use @diff_opts while using format-patchSam Vilain, May 26, 2010
  6. 087/104 hash_object: correction for zero length fileSam Vilain, May 26, 2010
  7. 088/104 for-each-ref: Field with abbreviated objectnameSam Vilain, May 26, 2010
  8. 090/104 Documentation: rebase -i ignores options passed to "git am"Sam Vilain, May 26, 2010
  9. 091/104 Documentation: fix minor inconsistencySam Vilain, May 26, 2010
  10. 092/104 Documentation/gitdiffcore: fix order in pickaxe descriptionSam Vilain, May 26, 2010
  11. 093/104 post-receive-email: document command-line modeSam Vilain, May 26, 2010
  12. 094/104 diff: fix coloring of extended diff headersSam Vilain, May 26, 2010
  13. 095/104 Fix "Out of memory? mmap failed" for files larger than 4GB on WindowsSam Vilain, May 26, 2010
  14. 096/104 start_command: close cmd->err descriptor when fork/spawn failsSam Vilain, May 26, 2010
  15. 097/104 Fix checkout of large files to network shares on Windows XPSam Vilain, May 26, 2010
  16. 098/104 mingw: use _commit to implement fsyncSam Vilain, May 26, 2010
  17. 099/104 Recent MinGW has a C99 implementation of snprintf functionsSam Vilain, May 26, 2010
  18. 100/104 Complete prototype of git_config_from_parameters()Sam Vilain, May 26, 2010
  19. 101/104 test get_git_work_tree() return value for NULLSam Vilain, May 26, 2010
  20. 102/104 t7502-commit: fix spellingSam Vilain, May 26, 2010
  21. 103/104 show-branch: use DEFAULT_ABBREV instead of 7Sam Vilain, May 26, 2010
  22. 104/104 Documentation/SubmittingPatches: clarify GMail section and SMTPSam Vilain, May 26, 2010
  23. Sverre RabbelierMay 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.