@@ -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