Kaynağa Gözat

Fixed parameter error with failed inline const constraint

Brian Fiete 4 ay önce
ebeveyn
işleme
a240acc674
1 değiştirilmiş dosya ile 12 ekleme ve 1 silme
  1. 12 1
      IDEHelper/Compiler/BfModule.cpp

+ 12 - 1
IDEHelper/Compiler/BfModule.cpp

@@ -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;