@@ -126,11 +126,12 @@ impl FileDesc {
126126 target_os = "nuttx"
127127 ) ) ) ]
128128 pub fn read_vectored ( & self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
129+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
129130 let ret = cvt ( unsafe {
130131 libc:: readv (
131132 self . as_raw_fd ( ) ,
132133 bufs. as_mut_ptr ( ) as * mut libc:: iovec as * const libc:: iovec ,
133- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
134+ bufs. len ( ) as libc:: c_int ,
134135 )
135136 } ) ?;
136137 Ok ( ret as usize )
@@ -221,11 +222,12 @@ impl FileDesc {
221222 target_os = "openbsd" , // OpenBSD 2.7
222223 ) ) ]
223224 pub fn read_vectored_at ( & self , bufs : & mut [ IoSliceMut < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
225+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
224226 let ret = cvt ( unsafe {
225227 libc:: preadv (
226228 self . as_raw_fd ( ) ,
227229 bufs. as_mut_ptr ( ) as * mut libc:: iovec as * const libc:: iovec ,
228- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
230+ bufs. len ( ) as libc:: c_int ,
229231 offset as _ ,
230232 )
231233 } ) ?;
@@ -267,11 +269,12 @@ impl FileDesc {
267269 ) -> isize ;
268270 ) ;
269271
272+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
270273 let ret = cvt ( unsafe {
271274 preadv (
272275 self . as_raw_fd ( ) ,
273276 bufs. as_mut_ptr ( ) as * mut libc:: iovec as * const libc:: iovec ,
274- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
277+ bufs. len ( ) as libc:: c_int ,
275278 offset as _ ,
276279 )
277280 } ) ?;
@@ -291,11 +294,12 @@ impl FileDesc {
291294
292295 match preadv64. get ( ) {
293296 Some ( preadv) => {
297+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
294298 let ret = cvt ( unsafe {
295299 preadv (
296300 self . as_raw_fd ( ) ,
297301 bufs. as_mut_ptr ( ) as * mut libc:: iovec as * const libc:: iovec ,
298- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
302+ bufs. len ( ) as libc:: c_int ,
299303 offset as _ ,
300304 )
301305 } ) ?;
@@ -327,11 +331,12 @@ impl FileDesc {
327331
328332 match preadv. get ( ) {
329333 Some ( preadv) => {
334+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
330335 let ret = cvt ( unsafe {
331336 preadv (
332337 self . as_raw_fd ( ) ,
333338 bufs. as_mut_ptr ( ) as * mut libc:: iovec as * const libc:: iovec ,
334- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
339+ bufs. len ( ) as libc:: c_int ,
335340 offset as _ ,
336341 )
337342 } ) ?;
@@ -359,11 +364,12 @@ impl FileDesc {
359364 target_os = "nuttx"
360365 ) ) ) ]
361366 pub fn write_vectored ( & self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
367+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
362368 let ret = cvt ( unsafe {
363369 libc:: writev (
364370 self . as_raw_fd ( ) ,
365371 bufs. as_ptr ( ) as * const libc:: iovec ,
366- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
372+ bufs. len ( ) as libc:: c_int ,
367373 )
368374 } ) ?;
369375 Ok ( ret as usize )
@@ -427,11 +433,12 @@ impl FileDesc {
427433 target_os = "openbsd" , // OpenBSD 2.7
428434 ) ) ]
429435 pub fn write_vectored_at ( & self , bufs : & [ IoSlice < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
436+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
430437 let ret = cvt ( unsafe {
431438 libc:: pwritev (
432439 self . as_raw_fd ( ) ,
433440 bufs. as_ptr ( ) as * const libc:: iovec ,
434- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
441+ bufs. len ( ) as libc:: c_int ,
435442 offset as _ ,
436443 )
437444 } ) ?;
@@ -473,11 +480,12 @@ impl FileDesc {
473480 ) -> isize ;
474481 ) ;
475482
483+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
476484 let ret = cvt ( unsafe {
477485 pwritev (
478486 self . as_raw_fd ( ) ,
479487 bufs. as_ptr ( ) as * const libc:: iovec ,
480- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
488+ bufs. len ( ) as libc:: c_int ,
481489 offset as _ ,
482490 )
483491 } ) ?;
@@ -497,11 +505,12 @@ impl FileDesc {
497505
498506 match pwritev64. get ( ) {
499507 Some ( pwritev) => {
508+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
500509 let ret = cvt ( unsafe {
501510 pwritev (
502511 self . as_raw_fd ( ) ,
503512 bufs. as_ptr ( ) as * const libc:: iovec ,
504- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
513+ bufs. len ( ) as libc:: c_int ,
505514 offset as _ ,
506515 )
507516 } ) ?;
@@ -533,11 +542,12 @@ impl FileDesc {
533542
534543 match pwritev. get ( ) {
535544 Some ( pwritev) => {
545+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
536546 let ret = cvt ( unsafe {
537547 pwritev (
538548 self . as_raw_fd ( ) ,
539549 bufs. as_ptr ( ) as * const libc:: iovec ,
540- cmp :: min ( bufs. len ( ) , max_iov ( ) ) as libc:: c_int ,
550+ bufs. len ( ) as libc:: c_int ,
541551 offset as _ ,
542552 )
543553 } ) ?;
0 commit comments