Quellcode durchsuchen

Fixed const expression crash issue

Brian Fiete vor 4 Jahren
Ursprung
Commit
066a7fce09
1 geänderte Dateien mit 7 neuen und 3 gelöschten Zeilen
  1. 7 3
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 7 - 3
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -7918,15 +7918,19 @@ BfTypedValue BfModule::TryLookupGenericConstVaue(BfIdentifierNode* identifierNod
 			{
 				BfConstExprValueType* constExprValueType = (BfConstExprValueType*)genericParamResult;
 
+				auto constType = genericTypeConstraint;
+				if (constType == NULL)
+					constType = GetPrimitiveType(BfTypeCode_IntPtr);
+
 				BfExprEvaluator exprEvaluator(this);
-				exprEvaluator.mExpectingType = genericTypeConstraint;
+				exprEvaluator.mExpectingType = constType;
 				exprEvaluator.GetLiteral(identifierNode, constExprValueType->mValue);								
 
 				if (exprEvaluator.mResult)
 				{
-					auto castedVal = CastToValue(identifierNode, exprEvaluator.mResult, genericTypeConstraint, (BfCastFlags)(BfCastFlags_Explicit | BfCastFlags_SilentFail));
+					auto castedVal = CastToValue(identifierNode, exprEvaluator.mResult, constType, (BfCastFlags)(BfCastFlags_Explicit | BfCastFlags_SilentFail));
 					if (castedVal)
-						return BfTypedValue(castedVal, genericTypeConstraint);
+						return BfTypedValue(castedVal, constType);
 				}
 				
 				return exprEvaluator.mResult;