mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-08 09:22:34 +00:00
- hopefully fixed the "is" operator to work with readonly pointers.
This commit is contained in:
parent
5a74e79b92
commit
eec08f0e24
1 changed files with 3 additions and 2 deletions
|
@ -277,7 +277,8 @@ bool AreCompatiblePointerTypes(PType *dest, PType *source, bool forcompare)
|
||||||
// null pointers can be assigned to everything, everything can be assigned to void pointers.
|
// null pointers can be assigned to everything, everything can be assigned to void pointers.
|
||||||
if (fromtype == nullptr || totype == TypeVoidPtr) return true;
|
if (fromtype == nullptr || totype == TypeVoidPtr) return true;
|
||||||
// when comparing const-ness does not matter.
|
// when comparing const-ness does not matter.
|
||||||
if (!forcompare && totype->IsConst != fromtype->IsConst) return false;
|
// If not comparing, then we should not allow const to be cast away.
|
||||||
|
if (!forcompare && fromtype->IsConst && !totype->IsConst) return false;
|
||||||
// A type is always compatible to itself.
|
// A type is always compatible to itself.
|
||||||
if (fromtype == totype) return true;
|
if (fromtype == totype) return true;
|
||||||
// Pointers to different types are only compatible if both point to an object and the source type is a child of the destination type.
|
// Pointers to different types are only compatible if both point to an object and the source type is a child of the destination type.
|
||||||
|
@ -4793,7 +4794,7 @@ FxExpression *FxTypeCheck::Resolve(FCompileContext& ctx)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
left = new FxTypeCast(left, NewPointer(RUNTIME_CLASS(DObject)), false);
|
left = new FxTypeCast(left, NewPointer(RUNTIME_CLASS(DObject), true), false);
|
||||||
ClassCheck = false;
|
ClassCheck = false;
|
||||||
}
|
}
|
||||||
right = new FxClassTypeCast(NewClassPointer(RUNTIME_CLASS(DObject)), right, false);
|
right = new FxClassTypeCast(NewClassPointer(RUNTIME_CLASS(DObject)), right, false);
|
||||||
|
|
Loading…
Reference in a new issue