Fix regression in C++ objects created from C# code to link managed instance properly

This commit is contained in:
Wojtek Figat
2025-03-13 22:31:01 +01:00
parent 5d32bb962f
commit 87e423ed48
2 changed files with 7 additions and 7 deletions

View File

@@ -796,12 +796,8 @@ ScriptingObject* ManagedBinaryModule::ManagedObjectSpawn(const ScriptingObjectSp
// Mark as managed type
object->Flags |= ObjectFlags::IsManagedType;
// Initialize managed instance
if (params.Managed)
{
object->SetManagedInstance((MObject*)params.Managed);
}
else
// Initialize managed instance (ScriptingObject ctor copies managed object handle)
if (!params.Managed)
{
// Invoke managed ctor (to match C++ logic)
object->CreateManaged();

View File

@@ -89,7 +89,11 @@ void SerializableScriptingObject::Deserialize(DeserializeStream& stream, ISerial
}
ScriptingObject::ScriptingObject(const SpawnParams& params)
: _gcHandle(0)
#if USE_NETCORE
: _gcHandle((MGCHandle)params.Managed)
#elif !COMPILE_WITHOUT_CSHARP
: _gcHandle(params.Managed ? MCore::GCHandle::New(params.Managed) : 0)
#endif
, _type(params.Type)
, _id(params.ID)
{