summaryrefslogtreecommitdiff
path: root/view/pe/peview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'view/pe/peview.cpp')
-rw-r--r--view/pe/peview.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/view/pe/peview.cpp b/view/pe/peview.cpp
index 77c52da8..96103155 100644
--- a/view/pe/peview.cpp
+++ b/view/pe/peview.cpp
@@ -597,6 +597,7 @@ bool PEView::Init()
m_extractMangledTypes = viewSettings->Get<bool>("analysis.extractTypesFromMangledNames", this);
m_simplifyTemplates = viewSettings->Get<bool>("analysis.types.templateSimplifier", this);
+ bool platformSetByUser = false;
settings = GetLoadSettings(GetTypeName());
if (settings)
{
@@ -605,11 +606,13 @@ bool PEView::Init()
if (settings->Contains("loader.platform"))
{
- Ref<Platform> platformOverride = Platform::GetByName(settings->Get<string>("loader.platform", this));
+ BNSettingsScope scope = SettingsAutoScope;
+ Ref<Platform> platformOverride = Platform::GetByName(settings->Get<string>("loader.platform", this, &scope));
if (platformOverride)
{
platform = platformOverride;
m_arch = platform->GetArchitecture();
+ platformSetByUser = (scope == SettingsResourceScope);
}
}
}
@@ -647,7 +650,9 @@ bool PEView::Init()
return false;
}
- platform = platform->GetAssociatedPlatformByAddress(m_entryPoint);
+ if (!platformSetByUser)
+ platform = platform->GetAssociatedPlatformByAddress(m_entryPoint);
+
SetDefaultPlatform(platform);
SetDefaultArchitecture(platform->GetArchitecture());