Skip to content

Commit 2472813

Browse files
gumb0axic
authored andcommitted
capi: Change wrap/unwrap for FizzyExecutionContext to use pointers only
1 parent 5f58446 commit 2472813

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/fizzy/capi.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ inline fizzy::Value* unwrap(FizzyValue* value) noexcept
166166
return reinterpret_cast<fizzy::Value*>(value);
167167
}
168168

169-
inline FizzyExecutionContext* wrap(fizzy::ExecutionContext& ctx) noexcept
169+
inline FizzyExecutionContext* wrap(fizzy::ExecutionContext* ctx) noexcept
170170
{
171-
return reinterpret_cast<FizzyExecutionContext*>(&ctx);
171+
return reinterpret_cast<FizzyExecutionContext*>(ctx);
172172
}
173173

174-
inline fizzy::ExecutionContext& unwrap(FizzyExecutionContext* ctx) noexcept
174+
inline fizzy::ExecutionContext* unwrap(FizzyExecutionContext* ctx) noexcept
175175
{
176-
return *reinterpret_cast<fizzy::ExecutionContext*>(ctx);
176+
return reinterpret_cast<fizzy::ExecutionContext*>(ctx);
177177
}
178178

179179
inline FizzyInstance* wrap(fizzy::Instance* instance) noexcept
@@ -208,7 +208,7 @@ inline fizzy::ExecuteFunction unwrap(FizzyExternalFn c_function, void* c_host_co
208208
fizzy::ExecutionContext& ctx) noexcept {
209209
const auto [c_func, c_host_ctx] =
210210
*std::any_cast<std::pair<FizzyExternalFn, void*>>(&host_ctx);
211-
return unwrap(c_func(c_host_ctx, wrap(&instance), wrap(args), wrap(ctx)));
211+
return unwrap(c_func(c_host_ctx, wrap(&instance), wrap(args), wrap(&ctx)));
212212
};
213213

214214
return {function, std::make_any<std::pair<FizzyExternalFn, void*>>(c_function, c_host_context)};
@@ -224,10 +224,10 @@ inline FizzyExternalFunction wrap(fizzy::ExternalFunction external_func)
224224
std::unique_ptr<fizzy::ExecutionContext> new_ctx;
225225
if (c_ctx == nullptr)
226226
new_ctx = std::make_unique<fizzy::ExecutionContext>();
227-
auto& ctx = new_ctx ? *new_ctx : unwrap(c_ctx);
227+
auto* ctx = new_ctx ? new_ctx.get() : unwrap(c_ctx);
228228

229229
auto* func = static_cast<fizzy::ExternalFunction*>(host_ctx);
230-
return wrap((func->function)(*unwrap(instance), unwrap(args), ctx));
230+
return wrap((func->function)(*unwrap(instance), unwrap(args), *ctx));
231231
};
232232

233233
auto host_ctx = std::make_unique<fizzy::ExternalFunction>(std::move(external_func));
@@ -713,7 +713,7 @@ FizzyExecutionResult fizzy_execute(FizzyInstance* c_instance, uint32_t func_idx,
713713
const auto* args = unwrap(c_args);
714714
const auto result =
715715
(c_ctx == nullptr ? fizzy::execute(*instance, func_idx, args) :
716-
fizzy::execute(*instance, func_idx, args, unwrap(c_ctx)));
716+
fizzy::execute(*instance, func_idx, args, *unwrap(c_ctx)));
717717
return wrap(result);
718718
}
719719

0 commit comments

Comments
 (0)