diff --git a/src/Generator/Generators/QuickJS/QuickJSSources.cs b/src/Generator/Generators/QuickJS/QuickJSSources.cs index 4ec2cf63..036ff7b7 100644 --- a/src/Generator/Generators/QuickJS/QuickJSSources.cs +++ b/src/Generator/Generators/QuickJS/QuickJSSources.cs @@ -598,7 +598,7 @@ namespace CppSharp.Generators.Cpp WriteLine("if (phase == 0)"); WriteOpenBraceAndIndent(); { - WriteLine($"JS_NewClassID(&{classId});"); + WriteLine($"JS_NewClassID(JS_GetRuntime(ctx), &{classId});"); NewLine(); WriteLine($"JS_NewClass(JS_GetRuntime(ctx), {classId}, &{classDef});"); diff --git a/src/Generator/Generators/QuickJS/Runtime/CppSharp_QuickJS.h b/src/Generator/Generators/QuickJS/Runtime/CppSharp_QuickJS.h index 0860be71..fb897ae8 100644 --- a/src/Generator/Generators/QuickJS/Runtime/CppSharp_QuickJS.h +++ b/src/Generator/Generators/QuickJS/Runtime/CppSharp_QuickJS.h @@ -174,9 +174,12 @@ static JSValue JS_Interop_CleanupObject(JSValue obj, JS_Interop_InstanceKind kin switch (kind) { case JS_INTEROP_INSTANCE_SIGNAL_CONTEXT: - JS_Interop_ClassData* data = (JS_Interop_ClassData*) JS_GetOpaque(obj, 0); - JS_Interop_FreeEventMap(data->ctx, &data->events); - js_free(data->ctx, data); + JS_Interop_ClassData* data = (JS_Interop_ClassData*) JS_GetOpaque(obj, JS_GetClassID(obj)); + if (data) + { + JS_Interop_FreeEventMap(data->ctx, &data->events); + js_free(data->ctx, data); + } } return JS_UNDEFINED; diff --git a/src/Generator/Generators/QuickJS/Runtime/Signal.cpp b/src/Generator/Generators/QuickJS/Runtime/Signal.cpp index 79059df5..96be089b 100644 --- a/src/Generator/Generators/QuickJS/Runtime/Signal.cpp +++ b/src/Generator/Generators/QuickJS/Runtime/Signal.cpp @@ -179,7 +179,7 @@ static void register_class__Signal(JSContext *ctx, JSModuleDef *m, bool set, int if (phase == 0) { - JS_NewClassID(&classId__Signal); + JS_NewClassID(JS_GetRuntime(ctx), &classId__Signal); JS_NewClass(JS_GetRuntime(ctx), classId__Signal, &classDef__Signal);