[ros-diffs] [hyperion] 38480: modified include/reactos/libs/pseh/pseh2.h modified lib/pseh/framebased-gcchack.c Call _SEH2EnterFrame before any goto. Gotos confuse GCC's flow control analysis making it disregard the returns_twice attribute on _SEH2EnterFrame. We avoid redundant inline code (NULL-initializing the top trylevel pointer) by modifying the library accordingly
hyperion at svn.reactos.org
hyperion at svn.reactos.org
Tue Dec 30 22:05:37 CET 2008
Author: hyperion
Date: Tue Dec 30 15:05:36 2008
New Revision: 38480
URL: http://svn.reactos.org/svn/reactos?rev=38480&view=rev
Log:
modified include/reactos/libs/pseh/pseh2.h
modified lib/pseh/framebased-gcchack.c
Call _SEH2EnterFrame before any goto. Gotos confuse GCC's flow control analysis making it disregard the returns_twice attribute on _SEH2EnterFrame. We avoid redundant inline code (NULL-initializing the top trylevel pointer) by modifying the library accordingly
Modified:
trunk/reactos/include/reactos/libs/pseh/pseh2.h
trunk/reactos/lib/pseh/framebased-gcchack.c
Modified: trunk/reactos/include/reactos/libs/pseh/pseh2.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/pseh2.h?rev=38480&r1=38479&r2=38480&view=diff
==============================================================================
--- trunk/reactos/include/reactos/libs/pseh/pseh2.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/libs/pseh/pseh2.h [iso-8859-1] Tue Dec 30 15:05:36 2008
@@ -212,14 +212,15 @@
(void)_SEH2FrameP; \
(void)_SEH2TryLevelP; \
\
+ if(_SEHTopTryLevel) \
+ _SEH2EnterFrame(_SEH2FrameP); \
+ \
_SEHTryLevel.ST_Next = _SEHPrevTryLevelP; \
goto _SEHBeforeTry; \
\
_SEHDoTry:; \
- __SEH_ENTER_TRYLEVEL(); \
- \
- if(_SEHTopTryLevel) \
- _SEH2EnterFrame(_SEH2FrameP); \
+ \
+ __SEH_ENTER_TRYLEVEL();
#define __SEH_END_SCOPE \
} \
Modified: trunk/reactos/lib/pseh/framebased-gcchack.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/framebased-gcchack.c?rev=38480&r1=38479&r2=38480&view=diff
==============================================================================
--- trunk/reactos/lib/pseh/framebased-gcchack.c [iso-8859-1] (original)
+++ trunk/reactos/lib/pseh/framebased-gcchack.c [iso-8859-1] Tue Dec 30 15:05:36 2008
@@ -241,6 +241,7 @@
void __cdecl _SEH2EnterFrame(_SEH2Frame_t * frame)
{
frame->SF_Registration.SER_Handler = __SEH2FrameHandler;
+ frame->SF_TopTryLevel = 0;
frame->SF_Code = 0;
__SEH2EnterFrame(&frame->SF_Registration);
}
More information about the Ros-diffs
mailing list