Skip to content

Commit a28db21

Browse files
committed
fix: avoid coio test panic on Rust >= 1.80
They [added](rust-lang/rust@1ba00d9) debug assert on OwnedFd drop in recent versions. OwnedFd duplicated in test through unsafe invocation.
1 parent eacd0eb commit a28db21

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
- Use after free in `fiber::Builder::start_non_joinable` when the fiber exits without yielding.
1515
- Incorrect, off-spec MP Ext type: caused runtime errors on some platforms.
16+
- Panic in coio test starting from 1.80 Rust.
1617

1718
### Deprecated
1819

tests/src/coio.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::convert::TryInto;
22
use std::io::{Read, Write};
33
use std::net::{TcpListener, TcpStream};
4-
use std::os::unix::io::{AsRawFd, FromRawFd};
4+
use std::os::fd::OwnedFd;
55
use std::os::unix::net::UnixStream;
66
use std::time::Duration;
77

@@ -26,16 +26,14 @@ pub fn coio_read_write() {
2626
let (reader_soc, writer_soc) = UnixStream::pair().unwrap();
2727

2828
let reader_fiber = fiber::start(move || {
29-
let mut stream =
30-
CoIOStream::new(unsafe { TcpStream::from_raw_fd(reader_soc.as_raw_fd()) }).unwrap();
29+
let mut stream = CoIOStream::new(TcpStream::from(OwnedFd::from(reader_soc))).unwrap();
3130
let mut buf: Vec<u8> = vec![0; 4];
3231
stream.read_exact(&mut buf).unwrap();
3332
assert_eq!(buf, vec![1, 2, 3, 4]);
3433
});
3534

3635
let writer_fiber = fiber::start(move || {
37-
let mut stream =
38-
CoIOStream::new(unsafe { TcpStream::from_raw_fd(writer_soc.as_raw_fd()) }).unwrap();
36+
let mut stream = CoIOStream::new(TcpStream::from(OwnedFd::from(writer_soc))).unwrap();
3937
stream.write_all(&[1, 2, 3, 4]).unwrap();
4038
});
4139

0 commit comments

Comments
 (0)