about summary refs log tree commit diff
path: root/src/libpanic_unwind/emcc.rs
diff options
context:
space:
mode:
authorAmanieu d'Antras <amanieu@gmail.com>2020-01-13 08:04:48 +0000
committerAmanieu d'Antras <amanieu@gmail.com>2020-01-13 12:54:16 +0000
commit25519e5290b4e04ab7a6cb07bcda01a542a0b1f3 (patch)
tree0070afb62fa95e273a0a2d8bf01d1aaecd43701a /src/libpanic_unwind/emcc.rs
parent4f163afed621adb51d0dfc7dd00c23cf38010d14 (diff)
downloadrust-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.rs8
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
     }
 }