diff options
-rw-r--r-- | src/posix.c | 7 | ||||
-rw-r--r-- | src/posix.h | 2 |
2 files changed, 4 insertions, 5 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) diff --git a/src/posix.h b/src/posix.h index 9ef348739..71c403c2f 100644 --- a/src/posix.h +++ b/src/posix.h @@ -97,7 +97,7 @@ typedef int git_file; * Use your manpages to check the docs on these. */ -extern int p_read(git_file fd, void *buf, size_t cnt); +extern ssize_t p_read(git_file fd, void *buf, size_t cnt); extern int p_write(git_file fd, const void *buf, size_t cnt); #define p_close(fd) close(fd) |