diff options
Diffstat (limited to 'view/sharedcache/workflow/SharedCacheWorkflow.cpp')
| -rw-r--r-- | view/sharedcache/workflow/SharedCacheWorkflow.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/view/sharedcache/workflow/SharedCacheWorkflow.cpp b/view/sharedcache/workflow/SharedCacheWorkflow.cpp index c0c90f87..7f63866a 100644 --- a/view/sharedcache/workflow/SharedCacheWorkflow.cpp +++ b/view/sharedcache/workflow/SharedCacheWorkflow.cpp @@ -120,7 +120,7 @@ void AnalyzeStubFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil, Sh auto view = func->GetView(); auto loadStubIslandRegion = [&](uint64_t regionAddr) { auto region = controller.GetRegionContaining(regionAddr); - if (!region.has_value()) + if (!region.has_value() || controller.IsRegionLoaded(*region)) return false; // Only interested in non image regions, we DON'T want to implicitly load image regions (with functions presumably). if (region->type == SharedCacheRegionTypeImage) @@ -133,7 +133,7 @@ void AnalyzeStubFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil, Sh // We allow the user to automatically load the directly referenced objc images as having the calls inlined is extremely useful for objc. auto loadTargetImage = [&](uint64_t imageAddr) { const auto image = controller.GetImageContaining(imageAddr); - if (!image.has_value()) + if (!image.has_value() || controller.IsImageLoaded(*image)) return false; return controller.ApplyImage(*view, *image); }; @@ -242,7 +242,7 @@ void AnalyzeStandardFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil if (view->IsValidOffset(regionAddr)) return false; auto region = controller.GetRegionContaining(regionAddr); - if (!region.has_value()) + if (!region.has_value() || controller.IsRegionLoaded(*region)) return false; // Only interested in non image regions, we DON'T want to implicitly load image regions (with functions presumably). if (region->type == SharedCacheRegionTypeImage) |
