mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
Hardening against errors during build fails
This commit is contained in:
parent
ac7f66c1f1
commit
9444a0d936
2 changed files with 28 additions and 12 deletions
|
@ -10353,6 +10353,10 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCo
|
||||||
emitParser->GetLineCharAtIdx(kv.mValue.mSrcStart, startLine, startLineChar);
|
emitParser->GetLineCharAtIdx(kv.mValue.mSrcStart, startLine, startLineChar);
|
||||||
|
|
||||||
int srcEnd = kv.mValue.mSrcEnd - 1;
|
int srcEnd = kv.mValue.mSrcEnd - 1;
|
||||||
|
|
||||||
|
if (srcEnd >= emitParser->mOrigSrcLength)
|
||||||
|
continue;
|
||||||
|
|
||||||
while (srcEnd >= kv.mValue.mSrcStart)
|
while (srcEnd >= kv.mValue.mSrcStart)
|
||||||
{
|
{
|
||||||
char c = emitParser->mSrc[srcEnd];
|
char c = emitParser->mSrc[srcEnd];
|
||||||
|
|
|
@ -4235,19 +4235,22 @@ void BfModule::CreateStaticField(BfFieldInstance* fieldInstance, bool isThreadLo
|
||||||
else
|
else
|
||||||
irType = mBfIRBuilder->MapType(fieldType, BfIRPopulateType_Eventually_Full);
|
irType = mBfIRBuilder->MapType(fieldType, BfIRPopulateType_Eventually_Full);
|
||||||
|
|
||||||
BfIRValue globalVar = mBfIRBuilder->CreateGlobalVariable(
|
if (fieldType->mSize > 0)
|
||||||
irType,
|
{
|
||||||
false,
|
BfIRValue globalVar = mBfIRBuilder->CreateGlobalVariable(
|
||||||
BfIRLinkageType_External,
|
irType,
|
||||||
initValue,
|
false,
|
||||||
staticVarName,
|
BfIRLinkageType_External,
|
||||||
isThreadLocal);
|
initValue,
|
||||||
mBfIRBuilder->GlobalVar_SetAlignment(globalVar, fieldType->mAlign);
|
staticVarName,
|
||||||
if (storageKind != BfIRStorageKind_Normal)
|
isThreadLocal);
|
||||||
mBfIRBuilder->GlobalVar_SetStorageKind(globalVar, storageKind);
|
mBfIRBuilder->GlobalVar_SetAlignment(globalVar, fieldType->mAlign);
|
||||||
|
if (storageKind != BfIRStorageKind_Normal)
|
||||||
|
mBfIRBuilder->GlobalVar_SetStorageKind(globalVar, storageKind);
|
||||||
|
|
||||||
BF_ASSERT(globalVar);
|
BF_ASSERT(globalVar);
|
||||||
mStaticFieldRefs[fieldInstance] = globalVar;
|
mStaticFieldRefs[fieldInstance] = globalVar;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14755,6 +14758,15 @@ BfModuleMethodInstance BfModule::GetMethodInstance(BfTypeInstance* typeInst, BfM
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (methodDef->mIdx >= typeInst->mMethodInstanceGroups.mSize)
|
||||||
|
PopulateType(typeInst, BfPopulateType_DataAndMethods);
|
||||||
|
|
||||||
|
if (methodDef->mIdx >= typeInst->mMethodInstanceGroups.mSize)
|
||||||
|
{
|
||||||
|
InternalError("GetMethodInstance OOB error", methodDef->GetRefNode());
|
||||||
|
return BfModuleMethodInstance();
|
||||||
|
}
|
||||||
|
|
||||||
methodInstGroup = &typeInst->mMethodInstanceGroups[methodDef->mIdx];
|
methodInstGroup = &typeInst->mMethodInstanceGroups[methodDef->mIdx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue