WebGLThreadingPatcher icon indicating copy to clipboard operation
WebGLThreadingPatcher copied to clipboard

Not working with Unity 6

Open kantagara opened this issue 11 months ago • 2 comments

Error: IL2CPP error for method 'System.Void System.Threading.<>_GenericWrapper::.ctor(System.Action1<T>)' in assembly 'E:\Projekti\Unity\Gundy Fishing - Copy\Library\Bee\artifacts\WebGL\ManagedStripped\mscorlib.dll' System.InvalidOperationException: Attempting to return from void method 'System.Void System.Threading.<>_GenericWrapper::.ctor(System.Action1<T>)' when there are values on the stack. Is this invalid IL code?

kantagara avatar Dec 10 '24 06:12 kantagara

@kantagara see https://github.com/VolodymyrBS/WebGLThreadingPatcher/issues/6#issuecomment-1962730261

StephenHodgson avatar Dec 10 '24 16:12 StephenHodgson

WebGLPostBuildCallback.cs:

@@ -162,7 +162,7 @@ static MethodDefinition CreateConstructor(ModuleDefinition moduleDefinition, Fie
                ctor.Parameters.Add(new ParameterDefinition(callbackField.FieldType));
                var ilProcessor = ctor.Body.GetILProcessor();
                ilProcessor.Emit(OpCodes.Ldarg_0);
-               ilProcessor.Emit(OpCodes.Call, new MethodReference(".ctor", moduleDefinition.TypeSystem.Void, moduleDefinition.TypeSystem.Object));
+               ilProcessor.Emit(OpCodes.Call, new MethodReference(".ctor", moduleDefinition.TypeSystem.Void, moduleDefinition.TypeSystem.Object) { HasThis = true });
                ilProcessor.Emit(OpCodes.Ldarg_0);
                ilProcessor.Emit(OpCodes.Ldarg_1);
                ilProcessor.Emit(OpCodes.Stfld, callbackField);

StephenHodgson avatar Dec 10 '24 16:12 StephenHodgson