@@ -126,11 +126,12 @@ impl FileDesc {
126
126
target_os = "nuttx"
127
127
) ) ) ]
128
128
pub fn read_vectored ( & self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
129
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
129
130
let ret = cvt ( unsafe {
130
131
libc:: readv (
131
132
self . as_raw_fd ( ) ,
132
133
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 ,
134
135
)
135
136
} ) ?;
136
137
Ok ( ret as usize )
@@ -221,11 +222,12 @@ impl FileDesc {
221
222
target_os = "openbsd" , // OpenBSD 2.7
222
223
) ) ]
223
224
pub fn read_vectored_at ( & self , bufs : & mut [ IoSliceMut < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
225
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
224
226
let ret = cvt ( unsafe {
225
227
libc:: preadv (
226
228
self . as_raw_fd ( ) ,
227
229
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 ,
229
231
offset as _ ,
230
232
)
231
233
} ) ?;
@@ -267,11 +269,12 @@ impl FileDesc {
267
269
) -> isize ;
268
270
) ;
269
271
272
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
270
273
let ret = cvt ( unsafe {
271
274
preadv (
272
275
self . as_raw_fd ( ) ,
273
276
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 ,
275
278
offset as _ ,
276
279
)
277
280
} ) ?;
@@ -291,11 +294,12 @@ impl FileDesc {
291
294
292
295
match preadv64. get ( ) {
293
296
Some ( preadv) => {
297
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
294
298
let ret = cvt ( unsafe {
295
299
preadv (
296
300
self . as_raw_fd ( ) ,
297
301
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 ,
299
303
offset as _ ,
300
304
)
301
305
} ) ?;
@@ -327,11 +331,12 @@ impl FileDesc {
327
331
328
332
match preadv. get ( ) {
329
333
Some ( preadv) => {
334
+ let bufs = io:: limit_slices_mut!( bufs, max_iov( ) ) ;
330
335
let ret = cvt ( unsafe {
331
336
preadv (
332
337
self . as_raw_fd ( ) ,
333
338
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 ,
335
340
offset as _ ,
336
341
)
337
342
} ) ?;
@@ -359,11 +364,12 @@ impl FileDesc {
359
364
target_os = "nuttx"
360
365
) ) ) ]
361
366
pub fn write_vectored ( & self , bufs : & [ IoSlice < ' _ > ] ) -> io:: Result < usize > {
367
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
362
368
let ret = cvt ( unsafe {
363
369
libc:: writev (
364
370
self . as_raw_fd ( ) ,
365
371
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 ,
367
373
)
368
374
} ) ?;
369
375
Ok ( ret as usize )
@@ -427,11 +433,12 @@ impl FileDesc {
427
433
target_os = "openbsd" , // OpenBSD 2.7
428
434
) ) ]
429
435
pub fn write_vectored_at ( & self , bufs : & [ IoSlice < ' _ > ] , offset : u64 ) -> io:: Result < usize > {
436
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
430
437
let ret = cvt ( unsafe {
431
438
libc:: pwritev (
432
439
self . as_raw_fd ( ) ,
433
440
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 ,
435
442
offset as _ ,
436
443
)
437
444
} ) ?;
@@ -473,11 +480,12 @@ impl FileDesc {
473
480
) -> isize ;
474
481
) ;
475
482
483
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
476
484
let ret = cvt ( unsafe {
477
485
pwritev (
478
486
self . as_raw_fd ( ) ,
479
487
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 ,
481
489
offset as _ ,
482
490
)
483
491
} ) ?;
@@ -497,11 +505,12 @@ impl FileDesc {
497
505
498
506
match pwritev64. get ( ) {
499
507
Some ( pwritev) => {
508
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
500
509
let ret = cvt ( unsafe {
501
510
pwritev (
502
511
self . as_raw_fd ( ) ,
503
512
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 ,
505
514
offset as _ ,
506
515
)
507
516
} ) ?;
@@ -533,11 +542,12 @@ impl FileDesc {
533
542
534
543
match pwritev. get ( ) {
535
544
Some ( pwritev) => {
545
+ let bufs = io:: limit_slices!( bufs, max_iov( ) ) ;
536
546
let ret = cvt ( unsafe {
537
547
pwritev (
538
548
self . as_raw_fd ( ) ,
539
549
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 ,
541
551
offset as _ ,
542
552
)
543
553
} ) ?;
0 commit comments