- if (a_count > a_uio->uio_iovs.kiovp->iov_len) {
- a_uio->uio_iovs.kiovp->iov_base += a_uio->uio_iovs.kiovp->iov_len;
- a_uio->uio_iovs.kiovp->iov_len = 0;
- }
- else {
- a_uio->uio_iovs.kiovp->iov_base += a_count;
- a_uio->uio_iovs.kiovp->iov_len -= a_count;
- }
- if (a_uio->uio_resid < 0) {
- a_uio->uio_resid = 0;
- }
- if (a_count > (user_size_t)a_uio->uio_resid) {
- a_uio->uio_offset += a_uio->uio_resid;
- a_uio->uio_resid = 0;
- }
- else {
- a_uio->uio_offset += a_count;
- a_uio->uio_resid -= a_count;
+ /*
+ * if a_count == 0, then we are asking to skip over
+ * any empty iovs
+ */
+ if (a_count) {
+ if (a_count > a_uio->uio_iovs.kiovp->iov_len) {
+ a_uio->uio_iovs.kiovp->iov_base += a_uio->uio_iovs.kiovp->iov_len;
+ a_uio->uio_iovs.kiovp->iov_len = 0;
+ }
+ else {
+ a_uio->uio_iovs.kiovp->iov_base += a_count;
+ a_uio->uio_iovs.kiovp->iov_len -= a_count;
+ }
+ if (a_uio->uio_resid < 0) {
+ a_uio->uio_resid = 0;
+ }
+ if (a_count > (user_size_t)a_uio->uio_resid) {
+ a_uio->uio_offset += a_uio->uio_resid;
+ a_uio->uio_resid = 0;
+ }
+ else {
+ a_uio->uio_offset += a_count;
+ a_uio->uio_resid -= a_count;
+ }