Explorar o código

Fixed parameter error with failed inline const constraint

Brian Fiete hai 5 meses
pai
achega
a240acc674
Modificáronse 1 ficheiros con 12 adicións e 1 borrados
  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;
 			BfLocalVariable* paramVar = NULL;
 			while (true)
 			while (true)
 			{
 			{
-				BF_ASSERT(localIdx < methodState.mLocals.size());
+				if (localIdx >= methodState.mLocals.size())
+				{
+					paramVar = NULL;
+					break;
+				}
+				
 				paramVar = methodState.mLocals[localIdx];
 				paramVar = methodState.mLocals[localIdx];
 				if ((paramVar->mCompositeCount == -1) &&
 				if ((paramVar->mCompositeCount == -1) &&
 					(!paramVar->mIsConst) &&
 					(!paramVar->mIsConst) &&
@@ -21715,6 +21720,12 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup,
 				localIdx++;
 				localIdx++;
 			}
 			}
 
 
+			if (paramVar == NULL)
+			{
+				Fail("Parameter count error", methodDef->GetRefNode());
+				break;
+			}
+
 			if ((isThis) && (mCurTypeInstance->IsValueType()) && (methodDef->mMethodType != BfMethodType_Ctor) && (!methodDef->HasNoThisSplat()))
 			if ((isThis) && (mCurTypeInstance->IsValueType()) && (methodDef->mMethodType != BfMethodType_Ctor) && (!methodDef->HasNoThisSplat()))
 			{
 			{
 				paramVar->mIsReadOnly = true;
 				paramVar->mIsReadOnly = true;