Merge remote-tracking branch 'remotes/ZDoom/gzdoom/4.13'
This commit is contained in:
commit
2c45d9aa99
8 changed files with 43 additions and 5 deletions
|
|
@ -12640,6 +12640,15 @@ FxExpression *FxLocalVariableDeclaration::Resolve(FCompileContext &ctx)
|
|||
if (ValueType->RegType == REGT_NIL && ValueType != TypeAuto)
|
||||
{
|
||||
auto sfunc = static_cast<VMScriptFunction *>(ctx.Function->Variants[0].Implementation);
|
||||
|
||||
const unsigned MAX_STACK_ALLOC = 512 * 1024; // Windows stack is 1 MB, but we cannot go up there without problems
|
||||
if (uint64_t(ValueType->Size) + uint64_t(sfunc->ExtraSpace) > MAX_STACK_ALLOC)
|
||||
{
|
||||
ScriptPosition.Message(MSG_ERROR, "%s exceeds max. allowed size of 512kb for local variables at variable %s", sfunc->Name.GetChars(), Name.GetChars());
|
||||
delete this;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
StackOffset = sfunc->AllocExtraStack(ValueType);
|
||||
|
||||
if (Init != nullptr)
|
||||
|
|
|
|||
|
|
@ -2286,6 +2286,11 @@ PType *ZCCCompiler::ResolveArraySize(PType *baseType, ZCC_Expression *arraysize,
|
|||
Error(arraysize, "Array size must be positive");
|
||||
return TypeError;
|
||||
}
|
||||
if (uint64_t(size) * baseType->Size > 0x7fffffff)
|
||||
{
|
||||
Error(arraysize, "Array size overflow. Total size must be less than 2GB");
|
||||
return TypeError;
|
||||
}
|
||||
baseType = NewArray(baseType, size);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue