1111
1212#include < cinttypes>
1313#include < cstdio> /* TODO: Improve this trick */
14+ #include < memory>
1415
1516#define NODE_LOADER_TRAMPOLINE_DECLARE_NAPI_METHOD (name, func ) \
1617 { \
@@ -31,8 +32,9 @@ typedef struct loader_impl_async_future_await_trampoline_type
3132 future_resolve_callback resolve_callback;
3233 future_reject_callback reject_callback;
3334 void *context;
35+ } loader_impl_async_future_await_trampoline_type;
3436
35- } * loader_impl_async_future_await_trampoline;
37+ typedef loader_impl_async_future_await_trampoline_type * loader_impl_async_future_await_trampoline;
3638
3739template <typename T>
3840union loader_impl_trampoline_cast
@@ -183,6 +185,7 @@ napi_value node_loader_trampoline_resolve(napi_env env, napi_callback_info info)
183185
184186 /* Execute the callback */
185187 loader_impl_async_future_await_trampoline trampoline = static_cast <loader_impl_async_future_await_trampoline>(result);
188+ std::unique_ptr<loader_impl_async_future_await_trampoline_type> trampoline_guard (trampoline);
186189
187190 return trampoline->resolve_trampoline (trampoline->node_impl , env, trampoline->resolve_callback , recv, args[1 ], trampoline->context );
188191}
@@ -240,6 +243,7 @@ napi_value node_loader_trampoline_reject(napi_env env, napi_callback_info info)
240243
241244 /* Execute the callback */
242245 loader_impl_async_future_await_trampoline trampoline = static_cast <loader_impl_async_future_await_trampoline>(result);
246+ std::unique_ptr<loader_impl_async_future_await_trampoline_type> trampoline_guard (trampoline);
243247
244248 return trampoline->reject_trampoline (trampoline->node_impl , env, trampoline->reject_callback , recv, args[1 ], trampoline->context );
245249}
0 commit comments