@@ -111,11 +111,12 @@ impl FileDesc {
111111        target_os = "nuttx"  
112112    ) ) ) ]  
113113    pub  fn  read_vectored ( & self ,  bufs :  & mut  [ IoSliceMut < ' _ > ] )  -> io:: Result < usize >  { 
114+         let  bufs = io:: limit_slices_mut!( bufs,  max_iov( ) ) ; 
114115        let  ret = cvt ( unsafe  { 
115116            libc:: readv ( 
116117                self . as_raw_fd ( ) , 
117118                bufs. as_mut_ptr ( )  as  * mut  libc:: iovec  as  * const  libc:: iovec , 
118-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
119+                 bufs. len ( )  as  libc:: c_int , 
119120            ) 
120121        } ) ?; 
121122        Ok ( ret as  usize ) 
@@ -201,11 +202,12 @@ impl FileDesc {
201202        target_os = "openbsd" ,  // OpenBSD 2.7  
202203    ) ) ]  
203204    pub  fn  read_vectored_at ( & self ,  bufs :  & mut  [ IoSliceMut < ' _ > ] ,  offset :  u64 )  -> io:: Result < usize >  { 
205+         let  bufs = io:: limit_slices_mut!( bufs,  max_iov( ) ) ; 
204206        let  ret = cvt ( unsafe  { 
205207            libc:: preadv ( 
206208                self . as_raw_fd ( ) , 
207209                bufs. as_mut_ptr ( )  as  * mut  libc:: iovec  as  * const  libc:: iovec , 
208-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
210+                 bufs. len ( )  as  libc:: c_int , 
209211                offset as  _ , 
210212            ) 
211213        } ) ?; 
@@ -247,11 +249,12 @@ impl FileDesc {
247249            )  -> isize ; 
248250        ) ; 
249251
252+         let  bufs = io:: limit_slices_mut!( bufs,  max_iov( ) ) ; 
250253        let  ret = cvt ( unsafe  { 
251254            preadv ( 
252255                self . as_raw_fd ( ) , 
253256                bufs. as_mut_ptr ( )  as  * mut  libc:: iovec  as  * const  libc:: iovec , 
254-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
257+                 bufs. len ( )  as  libc:: c_int , 
255258                offset as  _ , 
256259            ) 
257260        } ) ?; 
@@ -271,11 +274,12 @@ impl FileDesc {
271274
272275        match  preadv64. get ( )  { 
273276            Some ( preadv)  => { 
277+                 let  bufs = io:: limit_slices_mut!( bufs,  max_iov( ) ) ; 
274278                let  ret = cvt ( unsafe  { 
275279                    preadv ( 
276280                        self . as_raw_fd ( ) , 
277281                        bufs. as_mut_ptr ( )  as  * mut  libc:: iovec  as  * const  libc:: iovec , 
278-                         cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
282+                         bufs. len ( )  as  libc:: c_int , 
279283                        offset as  _ , 
280284                    ) 
281285                } ) ?; 
@@ -307,11 +311,12 @@ impl FileDesc {
307311
308312        match  preadv. get ( )  { 
309313            Some ( preadv)  => { 
314+                 let  bufs = io:: limit_slices_mut!( bufs,  max_iov( ) ) ; 
310315                let  ret = cvt ( unsafe  { 
311316                    preadv ( 
312317                        self . as_raw_fd ( ) , 
313318                        bufs. as_mut_ptr ( )  as  * mut  libc:: iovec  as  * const  libc:: iovec , 
314-                         cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
319+                         bufs. len ( )  as  libc:: c_int , 
315320                        offset as  _ , 
316321                    ) 
317322                } ) ?; 
@@ -339,11 +344,12 @@ impl FileDesc {
339344        target_os = "nuttx"  
340345    ) ) ) ]  
341346    pub  fn  write_vectored ( & self ,  bufs :  & [ IoSlice < ' _ > ] )  -> io:: Result < usize >  { 
347+         let  bufs = io:: limit_slices!( bufs,  max_iov( ) ) ; 
342348        let  ret = cvt ( unsafe  { 
343349            libc:: writev ( 
344350                self . as_raw_fd ( ) , 
345351                bufs. as_ptr ( )  as  * const  libc:: iovec , 
346-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
352+                 bufs. len ( )  as  libc:: c_int , 
347353            ) 
348354        } ) ?; 
349355        Ok ( ret as  usize ) 
@@ -408,11 +414,12 @@ impl FileDesc {
408414        target_os = "openbsd" ,  // OpenBSD 2.7  
409415    ) ) ]  
410416    pub  fn  write_vectored_at ( & self ,  bufs :  & [ IoSlice < ' _ > ] ,  offset :  u64 )  -> io:: Result < usize >  { 
417+         let  bufs = io:: limit_slices!( bufs,  max_iov( ) ) ; 
411418        let  ret = cvt ( unsafe  { 
412419            libc:: pwritev ( 
413420                self . as_raw_fd ( ) , 
414421                bufs. as_ptr ( )  as  * const  libc:: iovec , 
415-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
422+                 bufs. len ( )  as  libc:: c_int , 
416423                offset as  _ , 
417424            ) 
418425        } ) ?; 
@@ -454,11 +461,12 @@ impl FileDesc {
454461            )  -> isize ; 
455462        ) ; 
456463
464+         let  bufs = io:: limit_slices!( bufs,  max_iov( ) ) ; 
457465        let  ret = cvt ( unsafe  { 
458466            pwritev ( 
459467                self . as_raw_fd ( ) , 
460468                bufs. as_ptr ( )  as  * const  libc:: iovec , 
461-                 cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
469+                 bufs. len ( )  as  libc:: c_int , 
462470                offset as  _ , 
463471            ) 
464472        } ) ?; 
@@ -478,11 +486,12 @@ impl FileDesc {
478486
479487        match  pwritev64. get ( )  { 
480488            Some ( pwritev)  => { 
489+                 let  bufs = io:: limit_slices!( bufs,  max_iov( ) ) ; 
481490                let  ret = cvt ( unsafe  { 
482491                    pwritev ( 
483492                        self . as_raw_fd ( ) , 
484493                        bufs. as_ptr ( )  as  * const  libc:: iovec , 
485-                         cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
494+                         bufs. len ( )  as  libc:: c_int , 
486495                        offset as  _ , 
487496                    ) 
488497                } ) ?; 
@@ -514,11 +523,12 @@ impl FileDesc {
514523
515524        match  pwritev. get ( )  { 
516525            Some ( pwritev)  => { 
526+                 let  bufs = io:: limit_slices!( bufs,  max_iov( ) ) ; 
517527                let  ret = cvt ( unsafe  { 
518528                    pwritev ( 
519529                        self . as_raw_fd ( ) , 
520530                        bufs. as_ptr ( )  as  * const  libc:: iovec , 
521-                         cmp :: min ( bufs. len ( ) ,   max_iov ( ) )  as  libc:: c_int , 
531+                         bufs. len ( )  as  libc:: c_int , 
522532                        offset as  _ , 
523533                    ) 
524534                } ) ?; 
0 commit comments