From 706c784965172b48185a63a36ac1aa8ffb6dea14 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers <coelckers@users.noreply.github.com> Date: Sat, 22 Jul 2023 08:59:15 +0200 Subject: [PATCH] - added a few checks for null pointer types in the ZScript compiler. --- source/common/scripting/backend/codegen.cpp | 2 +- source/common/scripting/backend/codegen.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/common/scripting/backend/codegen.cpp b/source/common/scripting/backend/codegen.cpp index 6718368cd..2fcbef477 100644 --- a/source/common/scripting/backend/codegen.cpp +++ b/source/common/scripting/backend/codegen.cpp @@ -8858,7 +8858,7 @@ FxExpression *FxMemberFunctionCall::Resolve(FCompileContext& ctx) } } - if (Self->ValueType->isRealPointer()) + if (Self->ValueType->isRealPointer() && Self->ValueType->toPointer()->PointedType) { auto ptype = Self->ValueType->toPointer()->PointedType; cls = ptype->toContainer(); diff --git a/source/common/scripting/backend/codegen.h b/source/common/scripting/backend/codegen.h index c12e33d3f..2781adbe5 100644 --- a/source/common/scripting/backend/codegen.h +++ b/source/common/scripting/backend/codegen.h @@ -348,8 +348,8 @@ public: bool IsQuaternion() const { return ValueType == TypeQuaternion || ValueType == TypeFQuaternion || ValueType == TypeQuaternionStruct; }; bool IsBoolCompat() const { return ValueType->isScalar(); } bool IsObject() const { return ValueType->isObjectPointer(); } - bool IsArray() const { return ValueType->isArray() || (ValueType->isPointer() && ValueType->toPointer()->PointedType->isArray()); } - bool isStaticArray() const { return (ValueType->isPointer() && ValueType->toPointer()->PointedType->isStaticArray()); } // can only exist in pointer form. + bool IsArray() const { return ValueType->isArray() || (ValueType->isPointer() && ValueType->toPointer()->PointedType && ValueType->toPointer()->PointedType->isArray()); } + bool isStaticArray() const { return (ValueType->isPointer() && ValueType->toPointer()->PointedType && ValueType->toPointer()->PointedType->isStaticArray()); } // can only exist in pointer form. bool IsDynamicArray() const { return (ValueType->isDynArray()); } bool IsMap() const { return ValueType->isMap(); } bool IsMapIterator() const { return ValueType->isMapIterator(); }