Fix crash when reading Transform from native data stream

This commit is contained in:
Wojtek Figat
2022-11-21 15:37:17 +01:00
parent bed880248c
commit b139ebfe88
4 changed files with 8 additions and 2 deletions

View File

@@ -2268,6 +2268,11 @@ const Ray& Variant::AsRay() const
#endif #endif
} }
Transform& Variant::AsTransform()
{
return *(Transform*)AsBlob.Data;
}
const Transform& Variant::AsTransform() const const Transform& Variant::AsTransform() const
{ {
return *(const Transform*)AsBlob.Data; return *(const Transform*)AsBlob.Data;

View File

@@ -332,6 +332,7 @@ public:
const BoundingBox& AsBoundingBox() const; const BoundingBox& AsBoundingBox() const;
Ray& AsRay(); Ray& AsRay();
const Ray& AsRay() const; const Ray& AsRay() const;
Transform& AsTransform();
const Transform& AsTransform() const; const Transform& AsTransform() const;
const Matrix& AsMatrix() const; const Matrix& AsMatrix() const;
Array<Variant, HeapAllocation>& AsArray(); Array<Variant, HeapAllocation>& AsArray();

View File

@@ -344,7 +344,7 @@ void Serialization::Deserialize(ISerializable::DeserializeStream& stream, Varian
Deserialize(value, v.AsBoundingBox(), modifier); Deserialize(value, v.AsBoundingBox(), modifier);
break; break;
case VariantType::Transform: case VariantType::Transform:
Deserialize(value, *(Transform*)v.AsBlob.Data, modifier); Deserialize(value, v.AsTransform(), modifier);
break; break;
case VariantType::Ray: case VariantType::Ray:
Deserialize(value, v.AsRay(), modifier); Deserialize(value, v.AsRay(), modifier);

View File

@@ -438,7 +438,7 @@ void ReadStream::ReadVariant(Variant* data)
ReadBytes(&data->AsData, sizeof(Quaternion)); ReadBytes(&data->AsData, sizeof(Quaternion));
break; break;
case VariantType::Transform: case VariantType::Transform:
ReadTransform((Transform*)&data->AsData); ReadTransform(&data->AsTransform());
break; break;
case VariantType::Rectangle: case VariantType::Rectangle:
ReadBytes(&data->AsData, sizeof(Rectangle)); ReadBytes(&data->AsData, sizeof(Rectangle));