Skip to content

Commit 37e366b

Browse files
authored
Fix UnwindSafe auto impl (#459)
Add back `UnwindSafe` and `RefUnwindSafe` auto-impl --------- Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>
1 parent c39c621 commit 37e366b

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

crates/async-compression/src/generic/bufread/decoder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ use crate::{
22
codecs::DecodeV2,
33
core::util::{PartialBuffer, WriteBuffer},
44
};
5-
use std::{io::Result, ops::ControlFlow};
5+
use std::{io::Result, ops::ControlFlow, panic::AssertUnwindSafe};
66

77
#[derive(Debug)]
88
enum State {
99
Decoding,
1010
Flushing,
1111
Done,
1212
Next,
13-
Error(std::io::Error),
13+
Error(AssertUnwindSafe<std::io::Error>),
1414
}
1515

1616
#[derive(Debug)]
@@ -55,7 +55,7 @@ impl Decoder {
5555
// ignore the first error, occurs when input is empty
5656
// but we need to run decode to flush
5757
Err(err) if !first => {
58-
self.state = State::Error(err);
58+
self.state = State::Error(AssertUnwindSafe(err));
5959
if output.written_len() > 0 {
6060
return ControlFlow::Break(Ok(()));
6161
} else {
@@ -73,7 +73,7 @@ impl Decoder {
7373
Ok(true) => {
7474
if self.multiple_members {
7575
if let Err(err) = decoder.reinit() {
76-
self.state = State::Error(err);
76+
self.state = State::Error(AssertUnwindSafe(err));
7777
if output.written_len() > 0 {
7878
return ControlFlow::Break(Ok(()));
7979
} else {
@@ -91,7 +91,7 @@ impl Decoder {
9191
}
9292
Ok(false) => State::Flushing,
9393
Err(err) => {
94-
self.state = State::Error(err);
94+
self.state = State::Error(AssertUnwindSafe(err));
9595
if output.written_len() > 0 {
9696
return ControlFlow::Break(Ok(()));
9797
} else {
@@ -119,7 +119,7 @@ impl Decoder {
119119
let State::Error(err) = std::mem::replace(&mut self.state, State::Done) else {
120120
unreachable!()
121121
};
122-
return ControlFlow::Break(Err(err));
122+
return ControlFlow::Break(Err(err.0));
123123
}
124124
};
125125

crates/async-compression/src/generic/bufread/encoder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ use crate::{
22
codecs::EncodeV2,
33
core::util::{PartialBuffer, WriteBuffer},
44
};
5-
use std::{io::Result, ops::ControlFlow};
5+
use std::{io::Result, ops::ControlFlow, panic::AssertUnwindSafe};
66

77
#[derive(Debug)]
88
enum State {
99
Encoding(usize),
1010
Flushing,
1111
Finishing,
1212
Done,
13-
Error(std::io::Error),
13+
Error(AssertUnwindSafe<std::io::Error>),
1414
}
1515

1616
#[derive(Debug)]
@@ -54,7 +54,7 @@ impl Encoder {
5454
State::Finishing
5555
} else {
5656
if let Err(err) = encoder.encode(input, output) {
57-
self.state = State::Error(err);
57+
self.state = State::Error(AssertUnwindSafe(err));
5858
if output.written_len() > 0 {
5959
return ControlFlow::Break(Ok(()));
6060
} else {
@@ -79,7 +79,7 @@ impl Encoder {
7979
}
8080
Ok(false) => State::Flushing,
8181
Err(err) => {
82-
self.state = State::Error(err);
82+
self.state = State::Error(AssertUnwindSafe(err));
8383
if output.written_len() > 0 {
8484
return ControlFlow::Break(Ok(()));
8585
} else {
@@ -92,7 +92,7 @@ impl Encoder {
9292
Ok(true) => State::Done,
9393
Ok(false) => State::Finishing,
9494
Err(err) => {
95-
self.state = State::Error(err);
95+
self.state = State::Error(AssertUnwindSafe(err));
9696
if output.written_len() > 0 {
9797
return ControlFlow::Break(Ok(()));
9898
} else {
@@ -107,7 +107,7 @@ impl Encoder {
107107
let State::Error(err) = std::mem::replace(&mut self.state, State::Done) else {
108108
unreachable!()
109109
};
110-
return ControlFlow::Break(Err(err));
110+
return ControlFlow::Break(Err(err.0));
111111
}
112112
};
113113

0 commit comments

Comments
 (0)