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]; + } } } }