KJK:Hyperion: new macro _SEH_STATIC_FILTER, some changes

svn path=/trunk/; revision=11942
This commit is contained in:
Gunnar Dalsnes 2004-12-05 06:05:52 +00:00
parent bddec4f91a
commit 5f6525bc2b
2 changed files with 9 additions and 6 deletions

View file

@ -79,6 +79,8 @@ static __declspec(noreturn) __inline void __stdcall _SEHCompilerSpecificHandler
struct __SEHPortableFrame * _SEHPortableFrame \
)
#define _SEH_STATIC_FILTER(ACTION_) ((_SEHFilter_t)((ACTION_) + 2))
#define _SEH_FINALLY(NAME_) \
void __stdcall NAME_ \
( \
@ -88,7 +90,7 @@ static __declspec(noreturn) __inline void __stdcall _SEHCompilerSpecificHandler
#define _SEH_TRY_FINALLY(FINALLY_) \
_SEH_TRY_FILTER_FINALLY \
( \
(_SEHFilter_t)(_SEH_CONTINUE_SEARCH + 1), \
_SEH_STATIC_FILTER(_SEH_CONTINUE_SEARCH), \
(FINALLY_) \
)
@ -100,7 +102,7 @@ static __declspec(noreturn) __inline void __stdcall _SEHCompilerSpecificHandler
#define _SEH_TRY_HANDLE_FINALLY(FINALLY_) \
_SEH_TRY_FILTER_FINALLY \
( \
(_SEHFilter_t)(_SEH_EXECUTE_HANDLER + 1), \
_SEH_STATIC_FILTER(_SEH_EXECUTE_HANDLER), \
(FINALLY_) \
)

View file

@ -27,6 +27,7 @@
#include <pseh/framebased/internal.h>
#include <pseh/excpt.h>
#include <excpt.h>
#include <pseh/framebased.h>
/* Assembly helpers, see i386/framebased.asm */
extern void __cdecl _SEHCleanHandlerEnvironment(void);
@ -77,11 +78,11 @@ int __cdecl _SEHFrameHandler
switch((UINT_PTR)frame->SPF_Handlers->SH_Filter)
{
case _SEH_EXECUTE_HANDLER + 1:
case _SEH_CONTINUE_SEARCH + 1:
case _SEH_CONTINUE_EXECUTION + 1:
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_EXECUTION):
{
ret = (int)((UINT_PTR)frame->SPF_Handlers->SH_Filter) - 1;
ret = (int)((UINT_PTR)frame->SPF_Handlers->SH_Filter) - 2;
break;
}