@@ -1636,6 +1636,7 @@ pub(crate) macro limit_slices($bufs:expr, $n:expr) {
1636
1636
' slices: {
1637
1637
let bufs: & [ IoSlice < ' _ > ] = $bufs;
1638
1638
let n: usize = $n;
1639
+ super let empty = & [ IoSlice :: new ( & [ ] ) ] ;
1639
1640
// if bufs.len() > n || bufs.is_empty()
1640
1641
if core:: intrinsics:: unlikely ( bufs. len ( ) . wrapping_sub ( 1 ) >= n) {
1641
1642
for ( i, buf) in bufs. iter ( ) . enumerate ( ) {
@@ -1644,10 +1645,9 @@ pub(crate) macro limit_slices($bufs:expr, $n:expr) {
1644
1645
break ' slices & bufs[ i..i + len] ;
1645
1646
}
1646
1647
}
1647
- // All buffers are empty. Since POSIX requires at least one buffer
1648
- // for [writev], but possibly bufs.is_empty(), return an empty write.
1649
- // [writev]: https://pubs.opengroup.org/onlinepubs/9799919799/functions/writev.html
1650
- return Ok ( 0 ) ;
1648
+ // POSIX requires at least one buffer for writev.
1649
+ // https://pubs.opengroup.org/onlinepubs/9799919799/functions/writev.html
1650
+ break ' slices empty;
1651
1651
}
1652
1652
bufs
1653
1653
}
@@ -1663,6 +1663,7 @@ pub(crate) macro limit_slices_mut($bufs:expr, $n:expr) {
1663
1663
' slices: {
1664
1664
let bufs: & mut [ IoSliceMut < ' _ > ] = $bufs;
1665
1665
let n: usize = $n;
1666
+ super let empty = & mut [ IoSliceMut :: new ( & mut [ ] ) ] ;
1666
1667
// if bufs.len() > n || bufs.is_empty()
1667
1668
if core:: intrinsics:: unlikely ( bufs. len ( ) . wrapping_sub ( 1 ) >= n) {
1668
1669
for ( i, buf) in bufs. iter ( ) . enumerate ( ) {
@@ -1671,10 +1672,9 @@ pub(crate) macro limit_slices_mut($bufs:expr, $n:expr) {
1671
1672
break ' slices & mut bufs[ i..i + len] ;
1672
1673
}
1673
1674
}
1674
- // All buffers are empty. Since POSIX requires at least one buffer
1675
- // for [readv], but possibly bufs.is_empty(), return an empty read.
1676
- // [readv]: https://pubs.opengroup.org/onlinepubs/9799919799/functions/readv.html
1677
- return Ok ( 0 ) ;
1675
+ // POSIX requires at least one buffer for readv.
1676
+ // https://pubs.opengroup.org/onlinepubs/9799919799/functions/readv.html
1677
+ break ' slices empty;
1678
1678
}
1679
1679
bufs
1680
1680
}
0 commit comments