From 148de2e082d5e4ab7a53cd6e15ef2847c5cf20da Mon Sep 17 00:00:00 2001
From: Spoike <acceptthis@users.sourceforge.net>
Date: Thu, 27 May 2021 11:34:28 +0000
Subject: [PATCH] Fix qcc crash.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5874 fc73d0e0-1445-4013-8a0c-d673dee63da5
---
 engine/qclib/qcc_pr_comp.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/engine/qclib/qcc_pr_comp.c b/engine/qclib/qcc_pr_comp.c
index f6268ee9b..fa6ef57c9 100644
--- a/engine/qclib/qcc_pr_comp.c
+++ b/engine/qclib/qcc_pr_comp.c
@@ -16856,8 +16856,19 @@ static pbool QCC_PR_GenerateInitializerType(QCC_def_t *basedef, QCC_sref_t tmp,
 			}
 			else
 			{
-				for (i = 0; (unsigned)i < type->size; i++)
-					def.sym->symboldata[def.ofs+i]._int = tmp.sym->symboldata[tmp.ofs+i]._int;
+				const int *srcdata = (const void*)QCC_SRef_EvalConst(tmp);
+				if (!srcdata)
+				{
+					QCC_PR_ParseWarning(WARN_NOTCONSTANT, "initializer is not initialised yet, %s will be treated as 0", QCC_GetSRefName(tmp));
+					QCC_PR_ParsePrintSRef(WARN_NOTCONSTANT, tmp);
+					for (i = 0; (unsigned)i < type->size; i++)
+						def.sym->symboldata[def.ofs+i]._int = 0;
+				}
+				else
+				{
+					for (i = 0; (unsigned)i < type->size; i++)
+						def.sym->symboldata[def.ofs+i]._int = srcdata[i];
+				}
 			}
 		}
 	}