From fb96595ac37e23d88ad73cf888c76fe39aee5ddf Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 17 May 2020 07:04:40 -0700 Subject: [PATCH] Fixed null check for mAttributeTypeRef --- IDEHelper/Compiler/BfCompiler.cpp | 43 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 32026a21..49226803 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -4281,31 +4281,34 @@ void BfCompiler::GetSymbolReferences() while (attrib != NULL) { - String attrName = attrib->mAttributeTypeRef->ToString(); - BfType* attrType = NULL; - - BfAtomComposite nameComposite; - if (mSystem->ParseAtomComposite(attrName + "Attribute", nameComposite)) + if (attrib->mAttributeTypeRef != NULL) { - BfTypeDef* attrTypeDef = module->FindTypeDefRaw(nameComposite, 0, replaceTypeInst, declaringType, NULL); - if (attrTypeDef != NULL) - { - mResolvePassData->HandleTypeReference(attrib->mAttributeTypeRef, attrTypeDef); + String attrName = attrib->mAttributeTypeRef->ToString(); + BfType* attrType = NULL; - attrTypeDef->PopulateMemberSets(); - for (auto argExpr : attrib->mArguments) + BfAtomComposite nameComposite; + if (mSystem->ParseAtomComposite(attrName + "Attribute", nameComposite)) + { + BfTypeDef* attrTypeDef = module->FindTypeDefRaw(nameComposite, 0, replaceTypeInst, declaringType, NULL); + if (attrTypeDef != NULL) { - if (auto assignExpr = BfNodeDynCast(argExpr)) + mResolvePassData->HandleTypeReference(attrib->mAttributeTypeRef, attrTypeDef); + + attrTypeDef->PopulateMemberSets(); + for (auto argExpr : attrib->mArguments) { - auto propName = assignExpr->mLeft->ToString(); - BfMemberSetEntry* propDefEntry; - if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry)) + if (auto assignExpr = BfNodeDynCast(argExpr)) { - mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef); - } - else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry)) - { - mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef); + auto propName = assignExpr->mLeft->ToString(); + BfMemberSetEntry* propDefEntry; + if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry)) + { + mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef); + } + else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry)) + { + mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef); + } } } }