@@ -157,15 +157,15 @@ ZkDaedalusInstance* ZkDaedalusVm_popInstance(ZkDaedalusVm* slf) {
157157 ZKC_CHECK_NULL (slf);
158158
159159 try {
160- auto instance = slf->handle .pop_instance ();
161- if (instance == nullptr ) {
162- return nullptr ;
163- }
164- ZKC_RETURN_CATCH (new ZkDaedalusInstance (instance));
165- } catch (zenkit::DaedalusScriptError const & e) {
166- ZKC_LOG_ERROR (" Failed to pop instance: %s" , e.what ());
167- return nullptr ;
168- }
160+ auto instance = slf->handle .pop_instance ();
161+ if (instance == nullptr ) {
162+ return nullptr ;
163+ }
164+ ZKC_RETURN_CATCH (new ZkDaedalusInstance (instance));
165+ } catch (zenkit::DaedalusScriptError const & e) {
166+ ZKC_LOG_ERROR (" Failed to pop instance: %s" , e.what ());
167+ return nullptr ;
168+ }
169169}
170170
171171ZkDaedalusInstance* ZkDaedalusVm_getGlobalSelf (ZkDaedalusVm* slf) {
@@ -439,6 +439,15 @@ void ZkDaedalusVm_registerExternal(ZkDaedalusVm* slf,
439439 slf->externals .insert_or_assign (sym->index (), [cb, ctx](ZkDaedalusVm* vm) { cb (ctx, vm); });
440440}
441441
442+ void ZkDaedalusVm_overrideFunction (ZkDaedalusVm* slf, char const * name, ZkDaedalusVmExternalCallback cb, void * ctx) {
443+ ZKC_TRACE_FN ();
444+ ZKC_CHECK_NULLV (slf, name, cb);
445+ slf->handle .override_function (name, [slf, ctx, cb](zenkit::DaedalusVm&) -> zenkit::DaedalusNakedCall {
446+ cb (ctx, slf);
447+ return {};
448+ });
449+ }
450+
442451void ZkDaedalusVm_registerExternalDefault (ZkDaedalusVm* slf, ZkDaedalusVmExternalDefaultCallback cb, void * ctx) {
443452 ZKC_TRACE_FN ();
444453 ZKC_CHECK_NULLV (slf);
0 commit comments