[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