Fix crash when running async C# code with Mono
This commit is contained in:
@@ -41,12 +41,18 @@
|
|||||||
#include <mono/jit/mono-private-unstable.h>
|
#include <mono/jit/mono-private-unstable.h>
|
||||||
#include <mono/utils/mono-logger.h>
|
#include <mono/utils/mono-logger.h>
|
||||||
#include <mono/metadata/assembly.h>
|
#include <mono/metadata/assembly.h>
|
||||||
|
#include <mono/metadata/appdomain.h>
|
||||||
#include <mono/metadata/class.h>
|
#include <mono/metadata/class.h>
|
||||||
#include <mono/metadata/metadata.h>
|
#include <mono/metadata/metadata.h>
|
||||||
|
#include <mono/metadata/threads.h>
|
||||||
#include <mono/metadata/reflection.h>
|
#include <mono/metadata/reflection.h>
|
||||||
#include <mono/metadata/mono-private-unstable.h>
|
#include <mono/metadata/mono-private-unstable.h>
|
||||||
typedef char char_t;
|
typedef char char_t;
|
||||||
#define DOTNET_HOST_MONO_DEBUG 0
|
#define DOTNET_HOST_MONO_DEBUG 0
|
||||||
|
#ifdef USE_MONO_AOT_MODULE
|
||||||
|
void* MonoAotModuleHandle = nullptr;
|
||||||
|
#endif
|
||||||
|
MonoDomain* MonoDomainHandle = nullptr;
|
||||||
#else
|
#else
|
||||||
#error "Unknown .NET runtime host."
|
#error "Unknown .NET runtime host."
|
||||||
#endif
|
#endif
|
||||||
@@ -516,6 +522,12 @@ void MCore::GC::FreeMemory(void* ptr, bool coTaskMem)
|
|||||||
|
|
||||||
void MCore::Thread::Attach()
|
void MCore::Thread::Attach()
|
||||||
{
|
{
|
||||||
|
#if DOTNET_HOST_MONO
|
||||||
|
if (!IsInMainThread() && !mono_domain_get())
|
||||||
|
{
|
||||||
|
mono_thread_attach(MonoDomainHandle);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void MCore::Thread::Exit()
|
void MCore::Thread::Exit()
|
||||||
@@ -1767,11 +1779,6 @@ void* GetStaticMethodPointer(const String& methodName)
|
|||||||
|
|
||||||
#elif DOTNET_HOST_MONO
|
#elif DOTNET_HOST_MONO
|
||||||
|
|
||||||
#ifdef USE_MONO_AOT_MODULE
|
|
||||||
void* MonoAotModuleHandle = nullptr;
|
|
||||||
#endif
|
|
||||||
MonoDomain* MonoDomainHandle = nullptr;
|
|
||||||
|
|
||||||
void OnLogCallback(const char* logDomain, const char* logLevel, const char* message, mono_bool fatal, void* userData)
|
void OnLogCallback(const char* logDomain, const char* logLevel, const char* message, mono_bool fatal, void* userData)
|
||||||
{
|
{
|
||||||
String currentDomain(logDomain);
|
String currentDomain(logDomain);
|
||||||
|
|||||||
Reference in New Issue
Block a user