mirror of
https://github.com/reactos/reactos.git
synced 2025-05-17 16:27:00 +00:00
Reformatted, for real
svn path=/trunk/; revision=25909
This commit is contained in:
parent
97f61ad508
commit
35f897c768
1 changed files with 122 additions and 122 deletions
|
@ -44,194 +44,194 @@ void const * _SEHRtlUnwind = RtlUnwind;
|
||||||
|
|
||||||
static void __stdcall _SEHLocalUnwind
|
static void __stdcall _SEHLocalUnwind
|
||||||
(
|
(
|
||||||
_SEHPortableFrame_t * frame,
|
_SEHPortableFrame_t * frame,
|
||||||
_SEHPortableTryLevel_t * dsttrylevel
|
_SEHPortableTryLevel_t * dsttrylevel
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHPortableTryLevel_t * trylevel;
|
_SEHPortableTryLevel_t * trylevel;
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
trylevel = frame->SPF_TopTryLevel;
|
trylevel = frame->SPF_TopTryLevel;
|
||||||
trylevel != dsttrylevel;
|
trylevel != dsttrylevel;
|
||||||
trylevel = trylevel->SPT_Next
|
trylevel = trylevel->SPT_Next
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHFinally_t pfnFinally;
|
_SEHFinally_t pfnFinally;
|
||||||
|
|
||||||
/* ASSERT(trylevel); */
|
/* ASSERT(trylevel); */
|
||||||
|
|
||||||
pfnFinally = trylevel->SPT_Handlers->SH_Finally;
|
pfnFinally = trylevel->SPT_Handlers->SH_Finally;
|
||||||
|
|
||||||
if(pfnFinally)
|
if(pfnFinally)
|
||||||
pfnFinally(frame);
|
pfnFinally(frame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __cdecl _SEHCallHandler
|
static void __cdecl _SEHCallHandler
|
||||||
(
|
(
|
||||||
_SEHPortableFrame_t * frame,
|
_SEHPortableFrame_t * frame,
|
||||||
_SEHPortableTryLevel_t * trylevel
|
_SEHPortableTryLevel_t * trylevel
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHGlobalUnwind(frame);
|
_SEHGlobalUnwind(frame);
|
||||||
_SEHLocalUnwind(frame, trylevel);
|
_SEHLocalUnwind(frame, trylevel);
|
||||||
frame->SPF_Handler(trylevel);
|
frame->SPF_Handler(trylevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __cdecl _SEHFrameHandler
|
static int __cdecl _SEHFrameHandler
|
||||||
(
|
(
|
||||||
struct _EXCEPTION_RECORD * ExceptionRecord,
|
struct _EXCEPTION_RECORD * ExceptionRecord,
|
||||||
void * EstablisherFrame,
|
void * EstablisherFrame,
|
||||||
struct _CONTEXT * ContextRecord,
|
struct _CONTEXT * ContextRecord,
|
||||||
void * DispatcherContext
|
void * DispatcherContext
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHPortableFrame_t * frame;
|
_SEHPortableFrame_t * frame;
|
||||||
|
|
||||||
_SEHCleanHandlerEnvironment();
|
_SEHCleanHandlerEnvironment();
|
||||||
|
|
||||||
frame = EstablisherFrame;
|
frame = EstablisherFrame;
|
||||||
|
|
||||||
/* Unwinding */
|
/* Unwinding */
|
||||||
if(ExceptionRecord->ExceptionFlags & (4 | 2))
|
if(ExceptionRecord->ExceptionFlags & (4 | 2))
|
||||||
_SEHLocalUnwind(frame, NULL);
|
_SEHLocalUnwind(frame, NULL);
|
||||||
/* Handling */
|
/* Handling */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
_SEHPortableTryLevel_t * trylevel;
|
_SEHPortableTryLevel_t * trylevel;
|
||||||
|
|
||||||
if(ExceptionRecord->ExceptionCode)
|
if(ExceptionRecord->ExceptionCode)
|
||||||
frame->SPF_Code = ExceptionRecord->ExceptionCode;
|
frame->SPF_Code = ExceptionRecord->ExceptionCode;
|
||||||
else
|
else
|
||||||
frame->SPF_Code = 0xC0000001;
|
frame->SPF_Code = 0xC0000001;
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
trylevel = frame->SPF_TopTryLevel;
|
trylevel = frame->SPF_TopTryLevel;
|
||||||
trylevel != NULL;
|
trylevel != NULL;
|
||||||
trylevel = trylevel->SPT_Next
|
trylevel = trylevel->SPT_Next
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHFilter_t pfnFilter = trylevel->SPT_Handlers->SH_Filter;
|
_SEHFilter_t pfnFilter = trylevel->SPT_Handlers->SH_Filter;
|
||||||
|
|
||||||
switch((UINT_PTR)pfnFilter)
|
switch((UINT_PTR)pfnFilter)
|
||||||
{
|
{
|
||||||
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER):
|
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER):
|
||||||
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH):
|
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH):
|
||||||
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_CONTINUE_EXECUTION):
|
case (UINT_PTR)_SEH_STATIC_FILTER(_SEH_CONTINUE_EXECUTION):
|
||||||
{
|
{
|
||||||
ret = (int)((UINT_PTR)pfnFilter) - 2;
|
ret = (int)((UINT_PTR)pfnFilter) - 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if(trylevel->SPT_Handlers->SH_Filter)
|
if(trylevel->SPT_Handlers->SH_Filter)
|
||||||
{
|
{
|
||||||
EXCEPTION_POINTERS ep;
|
EXCEPTION_POINTERS ep;
|
||||||
|
|
||||||
ep.ExceptionRecord = ExceptionRecord;
|
ep.ExceptionRecord = ExceptionRecord;
|
||||||
ep.ContextRecord = ContextRecord;
|
ep.ContextRecord = ContextRecord;
|
||||||
|
|
||||||
ret = pfnFilter(&ep, frame);
|
ret = pfnFilter(&ep, frame);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ret = _SEH_CONTINUE_SEARCH;
|
ret = _SEH_CONTINUE_SEARCH;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _SEH_CONTINUE_EXECUTION */
|
/* _SEH_CONTINUE_EXECUTION */
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
return ExceptionContinueExecution;
|
return ExceptionContinueExecution;
|
||||||
/* _SEH_EXECUTE_HANDLER */
|
/* _SEH_EXECUTE_HANDLER */
|
||||||
else if(ret > 0)
|
else if(ret > 0)
|
||||||
_SEHCallHandler(frame, trylevel);
|
_SEHCallHandler(frame, trylevel);
|
||||||
/* _SEH_CONTINUE_SEARCH */
|
/* _SEH_CONTINUE_SEARCH */
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExceptionContinueSearch;
|
return ExceptionContinueSearch;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __stdcall _SEHEnterFrame_s
|
void __stdcall _SEHEnterFrame_s
|
||||||
(
|
(
|
||||||
_SEHPortableFrame_t * frame,
|
_SEHPortableFrame_t * frame,
|
||||||
_SEHPortableTryLevel_t * trylevel
|
_SEHPortableTryLevel_t * trylevel
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_SEHEnterFrame_f(frame, trylevel);
|
_SEHEnterFrame_f(frame, trylevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __stdcall _SEHEnterTry_s(_SEHPortableTryLevel_t * trylevel)
|
void __stdcall _SEHEnterTry_s(_SEHPortableTryLevel_t * trylevel)
|
||||||
{
|
{
|
||||||
_SEHEnterTry_f(trylevel);
|
_SEHEnterTry_f(trylevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __stdcall _SEHLeave_s(void)
|
void __stdcall _SEHLeave_s(void)
|
||||||
{
|
{
|
||||||
_SEHLeave_f();
|
_SEHLeave_f();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _SEH_FASTCALL _SEHEnterFrame_f
|
void _SEH_FASTCALL _SEHEnterFrame_f
|
||||||
(
|
(
|
||||||
_SEHPortableFrame_t * frame,
|
_SEHPortableFrame_t * frame,
|
||||||
_SEHPortableTryLevel_t * trylevel
|
_SEHPortableTryLevel_t * trylevel
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
/* ASSERT(frame); */
|
/* ASSERT(frame); */
|
||||||
/* ASSERT(trylevel); */
|
/* ASSERT(trylevel); */
|
||||||
frame->SPF_Registration.SER_Handler = _SEHFrameHandler;
|
frame->SPF_Registration.SER_Handler = _SEHFrameHandler;
|
||||||
frame->SPF_Code = 0;
|
frame->SPF_Code = 0;
|
||||||
frame->SPF_TopTryLevel = trylevel;
|
frame->SPF_TopTryLevel = trylevel;
|
||||||
trylevel->SPT_Next = NULL;
|
trylevel->SPT_Next = NULL;
|
||||||
_SEHRegisterFrame(&frame->SPF_Registration);
|
_SEHRegisterFrame(&frame->SPF_Registration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _SEH_FASTCALL _SEHEnterTry_f(_SEHPortableTryLevel_t * trylevel)
|
void _SEH_FASTCALL _SEHEnterTry_f(_SEHPortableTryLevel_t * trylevel)
|
||||||
{
|
{
|
||||||
_SEHPortableFrame_t * frame;
|
_SEHPortableFrame_t * frame;
|
||||||
|
|
||||||
frame = _SEH_CONTAINING_RECORD
|
frame = _SEH_CONTAINING_RECORD
|
||||||
(
|
(
|
||||||
_SEHCurrentRegistration(),
|
_SEHCurrentRegistration(),
|
||||||
_SEHPortableFrame_t,
|
_SEHPortableFrame_t,
|
||||||
SPF_Registration
|
SPF_Registration
|
||||||
);
|
);
|
||||||
|
|
||||||
trylevel->SPT_Next = frame->SPF_TopTryLevel;
|
trylevel->SPT_Next = frame->SPF_TopTryLevel;
|
||||||
frame->SPF_TopTryLevel = trylevel;
|
frame->SPF_TopTryLevel = trylevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _SEH_FASTCALL _SEHLeave_f(void)
|
void _SEH_FASTCALL _SEHLeave_f(void)
|
||||||
{
|
{
|
||||||
_SEHPortableFrame_t * frame;
|
_SEHPortableFrame_t * frame;
|
||||||
_SEHPortableTryLevel_t * trylevel;
|
_SEHPortableTryLevel_t * trylevel;
|
||||||
|
|
||||||
frame = _SEH_CONTAINING_RECORD
|
frame = _SEH_CONTAINING_RECORD
|
||||||
(
|
(
|
||||||
_SEHCurrentRegistration(),
|
_SEHCurrentRegistration(),
|
||||||
_SEHPortableFrame_t,
|
_SEHPortableFrame_t,
|
||||||
SPF_Registration
|
SPF_Registration
|
||||||
);
|
);
|
||||||
|
|
||||||
/* ASSERT(frame); */
|
/* ASSERT(frame); */
|
||||||
|
|
||||||
trylevel = frame->SPF_TopTryLevel;
|
trylevel = frame->SPF_TopTryLevel;
|
||||||
|
|
||||||
/* ASSERT(trylevel); */
|
/* ASSERT(trylevel); */
|
||||||
|
|
||||||
if(trylevel->SPT_Next)
|
if(trylevel->SPT_Next)
|
||||||
frame->SPF_TopTryLevel = trylevel->SPT_Next;
|
frame->SPF_TopTryLevel = trylevel->SPT_Next;
|
||||||
else
|
else
|
||||||
_SEHUnregisterFrame();
|
_SEHUnregisterFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue