summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2015-07-03 15:59:32 +0200
committerJunio C Hamano <gitster@pobox.com>2015-07-03 18:25:02 -0700
commit6c8afe495b2cb6e2069942d7c006f6660e186690 (patch)
tree005b10770005c0d15a7cb6272425031e9510356a
parent351d06df519ee405a1926e0c6ee34d6a1dba6b46 (diff)
downloadgit-mh/strbuf-read-file-returns-ssize-t.tar.gz
strbuf: strbuf_read_file() should return ssize_tmh/strbuf-read-file-returns-ssize-t
It is currently declared to return int, which could overflow for large files. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--strbuf.c5
-rw-r--r--strbuf.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/strbuf.c b/strbuf.c
index 88cafd4a70..b4da9f5d05 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -481,9 +481,10 @@ int strbuf_getwholeline_fd(struct strbuf *sb, int fd, int term)
return 0;
}
-int strbuf_read_file(struct strbuf *sb, const char *path, size_t hint)
+ssize_t strbuf_read_file(struct strbuf *sb, const char *path, size_t hint)
{
- int fd, len;
+ int fd;
+ ssize_t len;
fd = open(path, O_RDONLY);
if (fd < 0)
diff --git a/strbuf.h b/strbuf.h
index 1883494ca3..1ea9d0bdeb 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -364,7 +364,7 @@ extern ssize_t strbuf_read(struct strbuf *, int fd, size_t hint);
* Read the contents of a file, specified by its path. The third argument
* can be used to give a hint about the file size, to avoid reallocs.
*/
-extern int strbuf_read_file(struct strbuf *sb, const char *path, size_t hint);
+extern ssize_t strbuf_read_file(struct strbuf *sb, const char *path, size_t hint);
/**
* Read the target of a symbolic link, specified by its path. The third