Skip to content

Commit 60564d0

Browse files
authored
Merge pull request #34862 from TimNN/revert-34836-panic-counter
Revert #34836 "Refactored code to access TLS only in case of panic"
2 parents d5b9850 + dd72785 commit 60564d0

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/libstd/panicking.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,10 @@ fn default_hook(info: &PanicInfo) {
232232
pub unsafe fn try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<Any + Send>> {
233233
let mut slot = None;
234234
let mut f = Some(f);
235-
let ret;
235+
let ret = PANIC_COUNT.with(|s| {
236+
let prev = s.get();
237+
s.set(0);
236238

237-
{
238239
let mut to_run = || {
239240
slot = Some(f.take().unwrap()());
240241
};
@@ -247,21 +248,18 @@ pub unsafe fn try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<Any + Send>> {
247248
dataptr,
248249
&mut any_data,
249250
&mut any_vtable);
251+
s.set(prev);
252+
250253
if r == 0 {
251-
ret = Ok(());
254+
Ok(())
252255
} else {
253-
PANIC_COUNT.with(|s| {
254-
let prev = s.get();
255-
s.set(prev - 1);
256-
});
257-
ret = Err(mem::transmute(raw::TraitObject {
256+
Err(mem::transmute(raw::TraitObject {
258257
data: any_data as *mut _,
259258
vtable: any_vtable as *mut _,
260-
}));
259+
}))
261260
}
262-
}
261+
});
263262

264-
debug_assert!(PANIC_COUNT.with(|c| c.get() == 0));
265263
return ret.map(|()| {
266264
slot.take().unwrap()
267265
});

0 commit comments

Comments
 (0)