瀏覽代碼

Fixed erroneous char ptr const generation

Brian Fiete 3 年之前
父節點
當前提交
e871bd6ace
共有 1 個文件被更改,包括 9 次插入12 次删除
  1. 9 12
      IDEHelper/Compiler/BfIRBuilder.cpp

+ 9 - 12
IDEHelper/Compiler/BfIRBuilder.cpp

@@ -2970,10 +2970,10 @@ void BfIRBuilder::CreateDbgTypeDefinition(BfType* type)
 		diFieldTypes.push_back(memberType);
 	}
 
-	bool isPayloadEnum = (typeInstance->IsEnum()) && (!typeInstance->IsTypedPrimitive());
-	for (auto& fieldInstanceRef : typeInstance->mFieldInstances)
+	bool isPayloadEnum = (typeInstance->IsEnum()) && (!typeInstance->IsTypedPrimitive());	
+	for (int fieldIdx = 0; fieldIdx < typeInstance->mFieldInstances.mSize; fieldIdx++)		
 	{
-		auto fieldInstance = &fieldInstanceRef;
+		auto fieldInstance = &typeInstance->mFieldInstances[fieldIdx];
 		if (!fieldInstance->mFieldIncluded)
 			continue;
 		auto fieldDef = fieldInstance->GetFieldDef();
@@ -3091,18 +3091,15 @@ void BfIRBuilder::CreateDbgTypeDefinition(BfType* type)
 								{										
 									staticValue = ConstToMemory(staticValue);
 									wasMadeAddr = true;									
-								}								
-								else if (resolvedFieldType->IsPointer())
-								{
-									int stringId = constant->mInt32;
-									const StringImpl& str = mModule->mContext->mStringObjectIdMap[stringId].mString;
-									staticValue = mModule->GetStringCharPtr(str);
-								}								
+								}
 								else if (constant->mTypeCode == BfTypeCode_StringId)
 								{
-									int stringId = constant->mInt32;									
+									int stringId = constant->mInt32;
 									const StringImpl& str = mModule->mContext->mStringObjectIdMap[stringId].mString;
-									staticValue = mModule->GetStringObjectValue(str);																		
+									if (resolvedFieldType->IsPointer())
+										staticValue = mModule->GetStringCharPtr(str);									
+									else																		
+										staticValue = mModule->GetStringObjectValue(str);																		
 								}
 								else
 								{