nginx-0.0.1-2003-11-27-22:01:37 import
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index 8fe5cef..c7d69fe 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -9,9 +9,10 @@
     int             fd;
     char           *prev;
     off_t           fprev;
-    size_t          sent;
+    size_t          sent, size;
     ssize_t         n;
     ngx_int_t       eintr;
+    ngx_err_t       err;
     sendfilevec_t  *sfv;
     ngx_array_t     vec;
     ngx_event_t    *wev;
@@ -26,10 +27,14 @@
     do {
         fd = SFV_FD_SELF;
         prev = NULL;
+        fprev = 0;
         sfv = NULL;
         eintr = 0;
         sent = 0;
 
+        ngx_init_array(vec, c->pool, 10, sizeof(sendfilevec_t),
+                       NGX_CHAIN_ERROR);
+
         /* create the sendfilevec and coalesce the neighbouring hunks */
 
         for (cl = in; cl; cl = cl->next) {
@@ -47,7 +52,7 @@
                     ngx_test_null(sfv, ngx_push_array(&vec), NGX_CHAIN_ERROR);
                     sfv->sfv_fd = SFV_FD_SELF;
                     sfv->sfv_flag = 0;
-                    sfv->sfv_off = cl->hunk->pos;
+                    sfv->sfv_off = (off_t) (uintptr_t) cl->hunk->pos;
                     sfv->sfv_len = cl->hunk->last - cl->hunk->pos;
                 }
 
@@ -72,7 +77,7 @@
             }
         }
 
-        n = sendfile(c->fd, vec->elts, vec->nelts, &sent);
+        n = sendfilev(c->fd, vec.elts, vec.nelts, &sent);
 
         if (n == -1) {
             err = ngx_errno;
@@ -93,7 +98,7 @@
         }
 
 #if (NGX_DEBUG_WRITE_CHAIN)
-        ngx_log_debug(c->log, "sendfilev: %d " SIZE_T_FMT ", n _ sent);
+        ngx_log_debug(c->log, "sendfilev: %d " SIZE_T_FMT _ n _ sent);
 #endif
 
         c->sent += sent;