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(); }