summaryrefslogtreecommitdiffhomepage
path: root/Private/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Private/Source')
-rw-r--r--Private/Source/PEFCodeManager.cxx18
1 files changed, 8 insertions, 10 deletions
diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx
index ed6b7bbc..f8616a8c 100644
--- a/Private/Source/PEFCodeManager.cxx
+++ b/Private/Source/PEFCodeManager.cxx
@@ -24,6 +24,8 @@ UInt32 rt_get_pef_platform(void) noexcept {
return kPefArch64x0;
#elif defined(__x86_64__)
return kPefArchAMD64;
+#elif defined(__powerpc64__)
+ return kPefArchPowerPC;
#else
return kPefArchInvalid;
#endif // __32x0__ || __64x0__ || __x86_64__
@@ -53,15 +55,6 @@ PEFLoader::PEFLoader(const char *path) : fCachedBlob(nullptr), fBad(false) {
PEFContainer *container = reinterpret_cast<PEFContainer *>(fCachedBlob);
- auto fFree = [&]() -> void {
- kcout << "CodeManager: Warning: Executable format error!\n";
- fBad = true;
-
- ke_delete_ke_heap(fCachedBlob);
-
- fCachedBlob = nullptr;
- };
-
if (container->Cpu == Detail::rt_get_pef_platform() &&
container->Magic[0] == kPefMagic[0] &&
container->Magic[1] == kPefMagic[1] &&
@@ -74,7 +67,12 @@ PEFLoader::PEFLoader(const char *path) : fCachedBlob(nullptr), fBad(false) {
}
}
- fFree();
+ kcout << "CodeManager: Warning: Executable format error!\n";
+ fBad = true;
+
+ ke_delete_ke_heap(fCachedBlob);
+
+ fCachedBlob = nullptr;
}
}