You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by jo...@apache.org on 2006/11/07 13:05:51 UTC

svn commit: r472076 - /apr/apr/trunk/network_io/unix/sendrecv.c

Author: jorton
Date: Tue Nov  7 04:05:51 2006
New Revision: 472076

URL: http://svn.apache.org/viewvc?view=rev&rev=472076
Log:
* network_io/unix/sendrecv.c (apr_socket_sendfile) [HAVE_SENDFILEV]:
Prevent EFAULT failures with Solaris sendfilev in LFS builds.

PR: 39463
Submitted by: jorton, Joseph Tam <tam math.ubc.ca>

Modified:
    apr/apr/trunk/network_io/unix/sendrecv.c

Modified: apr/apr/trunk/network_io/unix/sendrecv.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/network_io/unix/sendrecv.c?view=diff&rev=472076&r1=472075&r2=472076
==============================================================================
--- apr/apr/trunk/network_io/unix/sendrecv.c (original)
+++ apr/apr/trunk/network_io/unix/sendrecv.c Tue Nov  7 04:05:51 2006
@@ -879,7 +879,9 @@
     for (i = 0; i < hdtr->numheaders; i++, curvec++) {
         sfv[curvec].sfv_fd = SFV_FD_SELF;
         sfv[curvec].sfv_flag = 0;
-        sfv[curvec].sfv_off = (apr_off_t)hdtr->headers[i].iov_base;
+        /* Cast to unsigned long to prevent sign extension of the
+         * pointer value for the LFS case; see PR 39463. */
+        sfv[curvec].sfv_off = (unsigned long)hdtr->headers[i].iov_base;
         sfv[curvec].sfv_len = hdtr->headers[i].iov_len;
         requested_len += sfv[curvec].sfv_len;
     }
@@ -903,7 +905,7 @@
     for (i = 0; i < hdtr->numtrailers; i++, curvec++) {
         sfv[curvec].sfv_fd = SFV_FD_SELF;
         sfv[curvec].sfv_flag = 0;
-        sfv[curvec].sfv_off = (apr_off_t)hdtr->trailers[i].iov_base;
+        sfv[curvec].sfv_off = (unsigned long)hdtr->trailers[i].iov_base;
         sfv[curvec].sfv_len = hdtr->trailers[i].iov_len;
         requested_len += sfv[curvec].sfv_len;
     }