Exemple #1
0
void __cdecl __FrameUnwindToEmptyState(
    EHRegistrationNode *pRN,
    DispatcherContext  *pDC,
    FuncInfo           *pFuncInfo
) {
    __ehstate_t         stateFromControlPC;
    TryBlockMapEntry    *pEntry;
    EHRegistrationNode  EstablisherFramePointers, *pEstablisher;

    pEstablisher = _GetEstablisherFrame(pRN, pDC, pFuncInfo, &EstablisherFramePointers);
    stateFromControlPC = __StateFromControlPc(pFuncInfo, pDC);
    pEntry = _CatchTryBlock(pFuncInfo, stateFromControlPC);

    __FrameUnwindToState(pEstablisher, pDC, pFuncInfo,
                         pEntry == nullptr ? EH_EMPTY_STATE : TBME_HIGH(*pEntry));
}
Exemple #2
0
static FRAMEINFO *_ExecutionInCatch(
    DispatcherContext *pDC
) {
    FRAMEINFO *pFrameInfo;
    int dummy;

    pFrameInfo = _FindFrameInfo(pDC->ControlPc, NULL);

    if (pFrameInfo == NULL) {
	return NULL;
    }
    
    if (pFrameInfo->pEstablisherFrame != _GetEstablisherFrame(pDC, &dummy)) {
	return NULL;
    }

    return pFrameInfo;
}