Fix potential field align error when dereferencing pointers.

This commit is contained in:
2023-05-31 22:52:18 +08:00
parent 0959b5cc25
commit 0cc15f0c8e

View File

@@ -575,9 +575,9 @@ namespace Cryville.Crtr {
case 1:
num = op.AsNumber();
return new Vector4(num, num, num, num);
case 2: return op.As<Vector2>();
case 3: return op.As<Vector3>();
default: return op.As<Vector4>();
case 2: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), 0, 0);
case 3: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), op.AsNumber(2 * sizeof(float)), 0);
default: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), op.AsNumber(2 * sizeof(float)), op.AsNumber(3 * sizeof(float)));
}
default: throw new ArgumentException("Not animatable");
}
@@ -899,9 +899,9 @@ namespace Cryville.Crtr {
switch ((op.Length - sizeof(int)) / sizeof(float)) {
case 0: return null;
case 1: return new Vector4(op.AsNumber(), 0, 0, 0);
case 2: return op.As<Vector2>();
case 3: return op.As<Vector3>();
default: return op.As<Vector4>();
case 2: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), 0, 0);
case 3: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), op.AsNumber(2 * sizeof(float)), 0);
default: return new Vector4(op.AsNumber(), op.AsNumber(sizeof(float)), op.AsNumber(2 * sizeof(float)), op.AsNumber(3 * sizeof(float)));
}
}
else if (op.Type == PdtInternalType.Number) {