diff options
author | Linquize <linquize@yahoo.com.hk> | 2014-08-02 21:57:56 +0800 |
---|---|---|
committer | Linquize <linquize@yahoo.com.hk> | 2014-08-10 22:00:04 +0800 |
commit | c6ba8a3765101adf61d7064e34519d2ff7512941 (patch) | |
tree | 9cb354efa54bfe8f67b4926a9b75a23d9499642c /src/posix.c | |
parent | 59403f1ff55346c64bfaa0744ea7f3375da71725 (diff) | |
download | libgit2-c6ba8a3765101adf61d7064e34519d2ff7512941.tar.gz |
Can read large file larger than 2GB on Windows
Diffstat (limited to 'src/posix.c')
-rw-r--r-- | src/posix.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/posix.c b/src/posix.c index 7aeb0e6c1..21b049e1b 100644 --- a/src/posix.c +++ b/src/posix.c @@ -151,15 +151,14 @@ int p_rename(const char *from, const char *to) #endif /* GIT_WIN32 */ -int p_read(git_file fd, void *buf, size_t cnt) +ssize_t p_read(git_file fd, void *buf, size_t cnt) { char *b = buf; while (cnt) { ssize_t r; #ifdef GIT_WIN32 - assert((size_t)((unsigned int)cnt) == cnt); - r = read(fd, b, (unsigned int)cnt); + r = read(fd, b, cnt > INT_MAX ? INT_MAX : (unsigned int)cnt); #else r = read(fd, b, cnt); #endif @@ -173,7 +172,7 @@ int p_read(git_file fd, void *buf, size_t cnt) cnt -= r; b += r; } - return (int)(b - (char *)buf); + return (b - (char *)buf); } int p_write(git_file fd, const void *buf, size_t cnt) |