mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-09 21:50:50 +00:00
[WinEH] Fix memory leak with catch-all mapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235328 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b54df5252a
commit
9cc1f32626
@ -1425,11 +1425,18 @@ void WinEHPrepare::mapLandingPadBlocks(LandingPadInst *LPad,
|
||||
findCleanupHandlers(Actions, BB, BB);
|
||||
|
||||
// Add the catch handler to the action list.
|
||||
// Since this is a catch-all handler, the selector won't actually appear
|
||||
// in the code anywhere. ExpectedSelector here is the constant null ptr
|
||||
// that we got from the landing pad instruction.
|
||||
CatchHandler *Action = new CatchHandler(BB, ExpectedSelector, nullptr);
|
||||
CatchHandlerMap[BB] = Action;
|
||||
CatchHandler *Action = nullptr;
|
||||
if (CatchHandlerMap.count(BB) && CatchHandlerMap[BB] != nullptr) {
|
||||
// If the CatchHandlerMap already has an entry for this BB, re-use it.
|
||||
Action = CatchHandlerMap[BB];
|
||||
assert(Action->getSelector() == ExpectedSelector);
|
||||
} else {
|
||||
// Since this is a catch-all handler, the selector won't actually appear
|
||||
// in the code anywhere. ExpectedSelector here is the constant null ptr
|
||||
// that we got from the landing pad instruction.
|
||||
Action = new CatchHandler(BB, ExpectedSelector, nullptr);
|
||||
CatchHandlerMap[BB] = Action;
|
||||
}
|
||||
Actions.insertCatchHandler(Action);
|
||||
DEBUG(dbgs() << " Catch all handler at block " << BB->getName() << "\n");
|
||||
++HandlersFound;
|
||||
|
Loading…
Reference in New Issue
Block a user