|
@@ -21706,7 +21706,12 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup,
|
|
|
BfLocalVariable* paramVar = NULL;
|
|
|
while (true)
|
|
|
{
|
|
|
- BF_ASSERT(localIdx < methodState.mLocals.size());
|
|
|
+ if (localIdx >= methodState.mLocals.size())
|
|
|
+ {
|
|
|
+ paramVar = NULL;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
paramVar = methodState.mLocals[localIdx];
|
|
|
if ((paramVar->mCompositeCount == -1) &&
|
|
|
(!paramVar->mIsConst) &&
|
|
@@ -21715,6 +21720,12 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup,
|
|
|
localIdx++;
|
|
|
}
|
|
|
|
|
|
+ if (paramVar == NULL)
|
|
|
+ {
|
|
|
+ Fail("Parameter count error", methodDef->GetRefNode());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
if ((isThis) && (mCurTypeInstance->IsValueType()) && (methodDef->mMethodType != BfMethodType_Ctor) && (!methodDef->HasNoThisSplat()))
|
|
|
{
|
|
|
paramVar->mIsReadOnly = true;
|