diff options
| author | Amanieu d'Antras <amanieu@gmail.com> | 2020-01-13 08:04:48 +0000 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2020-01-13 12:54:16 +0000 |
| commit | 25519e5290b4e04ab7a6cb07bcda01a542a0b1f3 (patch) | |
| tree | 0070afb62fa95e273a0a2d8bf01d1aaecd43701a /src/libpanic_unwind/emcc.rs | |
| parent | 4f163afed621adb51d0dfc7dd00c23cf38010d14 (diff) | |
| download | rust-25519e5290b4e04ab7a6cb07bcda01a542a0b1f3.tar.gz rust-25519e5290b4e04ab7a6cb07bcda01a542a0b1f3.zip | |
Fix destructor in emcc.rs
Diffstat (limited to 'src/libpanic_unwind/emcc.rs')
| -rw-r--r-- | src/libpanic_unwind/emcc.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libpanic_unwind/emcc.rs b/src/libpanic_unwind/emcc.rs index 0f93140238b..9161d49959c 100644 --- a/src/libpanic_unwind/emcc.rs +++ b/src/libpanic_unwind/emcc.rs @@ -88,8 +88,12 @@ cfg_if::cfg_if! { } extern "C" fn exception_cleanup(ptr: *mut libc::c_void) -> DestructorRet { unsafe { - ptr::drop_in_place(ptr as *mut Exception); - super::__rust_drop_panic(); + if let Some(b) = (ptr as *mut Exception).read().data { + drop(b); + super::__rust_drop_panic(); + } + #[cfg(any(target_arch = "arm", target_arch = "wasm32"))] + ptr } } |
