From c69fda5e2a56c49c5e8cc66a35474f1aa69ca34d Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 27 Jun 2010 04:30:31 +0000 Subject: * io.c (simple_sendfile): don't try to send data more than SSIZE_MAX with single sendfile call.. based on the patch by Eric Wong. [ruby-core:30908] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'io.c') diff --git a/io.c b/io.c index 274ee89c10..90932de2c8 100644 --- a/io.c +++ b/io.c @@ -8068,9 +8068,14 @@ nogvl_copy_stream_wait_write(struct copy_stream_struct *stp) #endif static ssize_t -simple_sendfile(int out_fd, int in_fd, off_t *offset, size_t count) +simple_sendfile(int out_fd, int in_fd, off_t *offset, off_t count) { - return sendfile(out_fd, in_fd, offset, count); +#if SIZEOF_OFF_T > SIZEOF_SIZE_T + /* we are limited by the 32-bit ssize_t return value on 32-bit */ + if (count > (off_t)SSIZE_MAX) + count = SSIZE_MAX; +#endif + return sendfile(out_fd, in_fd, offset, (size_t)count); } #endif -- cgit v1.2.3