@@ -111,11 +111,12 @@ impl FileDesc {
111
111
target_os = "nuttx"
112
112
) ) ) ]
113
113
pub fn read_vectored ( & self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
114
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
114
115
let ret = cvt ( unsafe {
115
116
libc:: readv (
116
117
self . as_raw_fd ( ) ,
117
118
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 ,
119
120
)
120
121
} ) ?;
121
122
Ok ( ret as usize )
@@ -201,11 +202,12 @@ impl FileDesc {
201
202
target_os = "openbsd" , // OpenBSD 2.7
202
203
) ) ]
203
204
pub fn read_vectored_at ( & self , bufs : & mut [ IoSliceMut < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
205
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
204
206
let ret = cvt ( unsafe {
205
207
libc:: preadv (
206
208
self . as_raw_fd ( ) ,
207
209
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 ,
209
211
offset as _ ,
210
212
)
211
213
} ) ?;
@@ -247,11 +249,12 @@ impl FileDesc {
247
249
) -> isize ;
248
250
) ;
249
251
252
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
250
253
let ret = cvt ( unsafe {
251
254
preadv (
252
255
self . as_raw_fd ( ) ,
253
256
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 ,
255
258
offset as _ ,
256
259
)
257
260
} ) ?;
@@ -271,11 +274,12 @@ impl FileDesc {
271
274
272
275
match preadv64. get ( ) {
273
276
Some ( preadv) => {
277
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
274
278
let ret = cvt ( unsafe {
275
279
preadv (
276
280
self . as_raw_fd ( ) ,
277
281
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 ,
279
283
offset as _ ,
280
284
)
281
285
} ) ?;
@@ -307,11 +311,12 @@ impl FileDesc {
307
311
308
312
match preadv. get ( ) {
309
313
Some ( preadv) => {
314
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
310
315
let ret = cvt ( unsafe {
311
316
preadv (
312
317
self . as_raw_fd ( ) ,
313
318
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 ,
315
320
offset as _ ,
316
321
)
317
322
} ) ?;
@@ -339,11 +344,12 @@ impl FileDesc {
339
344
target_os = "nuttx"
340
345
) ) ) ]
341
346
pub fn write_vectored ( & self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
347
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
342
348
let ret = cvt ( unsafe {
343
349
libc:: writev (
344
350
self . as_raw_fd ( ) ,
345
351
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 ,
347
353
)
348
354
} ) ?;
349
355
Ok ( ret as usize )
@@ -408,11 +414,12 @@ impl FileDesc {
408
414
target_os = "openbsd" , // OpenBSD 2.7
409
415
) ) ]
410
416
pub fn write_vectored_at ( & self , bufs : & [ IoSlice < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
417
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
411
418
let ret = cvt ( unsafe {
412
419
libc:: pwritev (
413
420
self . as_raw_fd ( ) ,
414
421
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 ,
416
423
offset as _ ,
417
424
)
418
425
} ) ?;
@@ -454,11 +461,12 @@ impl FileDesc {
454
461
) -> isize ;
455
462
) ;
456
463
464
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
457
465
let ret = cvt ( unsafe {
458
466
pwritev (
459
467
self . as_raw_fd ( ) ,
460
468
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 ,
462
470
offset as _ ,
463
471
)
464
472
} ) ?;
@@ -478,11 +486,12 @@ impl FileDesc {
478
486
479
487
match pwritev64. get ( ) {
480
488
Some ( pwritev) => {
489
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
481
490
let ret = cvt ( unsafe {
482
491
pwritev (
483
492
self . as_raw_fd ( ) ,
484
493
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 ,
486
495
offset as _ ,
487
496
)
488
497
} ) ?;
@@ -514,11 +523,12 @@ impl FileDesc {
514
523
515
524
match pwritev. get ( ) {
516
525
Some ( pwritev) => {
526
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
517
527
let ret = cvt ( unsafe {
518
528
pwritev (
519
529
self . as_raw_fd ( ) ,
520
530
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 ,
522
532
offset as _ ,
523
533
)
524
534
} ) ?;
0 commit comments