about summary refs log tree commit diff
diff options
context:
space:
mode:
-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
     }
 }