Skip to content

Commit 7868f3a

Browse files
authored
Merge pull request #1159 from sdroege/iostream-non-ioerror-panics
gio: Fix panics if `PollableInputStream` / `PollableOutputStream` ret…
2 parents 59e891f + 15e8e2a commit 7868f3a

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

gio/src/pollable_input_stream.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ impl<T: IsA<PollableInputStream>> AsyncRead for InputStreamAsyncRead<T> {
175175
match gio_result {
176176
Ok(size) => Poll::Ready(Ok(size as usize)),
177177
Err(err) => {
178-
let kind = err.kind::<crate::IOErrorEnum>().unwrap();
178+
let kind = err
179+
.kind::<crate::IOErrorEnum>()
180+
.unwrap_or(crate::IOErrorEnum::Failed);
179181
if kind == crate::IOErrorEnum::WouldBlock {
180182
let mut waker = Some(cx.waker().clone());
181183
let source = stream.0.as_ref().create_source(

gio/src/pollable_output_stream.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ impl<T: IsA<PollableOutputStream>> AsyncWrite for OutputStreamAsyncWrite<T> {
181181
match gio_result {
182182
Ok(size) => Poll::Ready(Ok(size as usize)),
183183
Err(err) => {
184-
let kind = err.kind::<crate::IOErrorEnum>().unwrap();
184+
let kind = err
185+
.kind::<crate::IOErrorEnum>()
186+
.unwrap_or(crate::IOErrorEnum::Failed);
185187
if kind == crate::IOErrorEnum::WouldBlock {
186188
let mut waker = Some(cx.waker().clone());
187189
let source = stream.0.as_ref().create_source(
@@ -245,7 +247,10 @@ impl<T: IsA<PollableOutputStream>> AsyncWrite for OutputStreamAsyncWrite<T> {
245247
}
246248
Ok((_, _)) => unreachable!(),
247249
Err(err) => Poll::Ready(Err(io::Error::new(
248-
io::ErrorKind::from(err.kind::<crate::IOErrorEnum>().unwrap()),
250+
io::ErrorKind::from(
251+
err.kind::<crate::IOErrorEnum>()
252+
.unwrap_or(crate::IOErrorEnum::Failed),
253+
),
249254
err,
250255
))),
251256
}

0 commit comments

Comments
 (0)