From 5f6525bc2b794c010d567293127b619d81d1cca3 Mon Sep 17 00:00:00 2001 From: Gunnar Dalsnes Date: Sun, 5 Dec 2004 06:05:52 +0000 Subject: [PATCH] KJK:Hyperion: new macro _SEH_STATIC_FILTER, some changes svn path=/trunk/; revision=11942 --- reactos/include/pseh/framebased.h | 6 ++++-- reactos/lib/pseh/framebased.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/reactos/include/pseh/framebased.h b/reactos/include/pseh/framebased.h index 6bbe6cc4f2c..063fc7dd5f6 100644 --- a/reactos/include/pseh/framebased.h +++ b/reactos/include/pseh/framebased.h @@ -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_) \ ) diff --git a/reactos/lib/pseh/framebased.c b/reactos/lib/pseh/framebased.c index 8bcbbfd4e50..b23b2091608 100644 --- a/reactos/lib/pseh/framebased.c +++ b/reactos/lib/pseh/framebased.c @@ -27,6 +27,7 @@ #include #include #include +#include /* 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; }