Author: gedmurphy
Date: Sun Jun 3 17:06:32 2007
New Revision: 26973
URL: http://svn.reactos.org/svn/reactos?rev=26973&view=rev
Log:
- Don't return directly from PSEH. Same error, same dev, different day.
- Thanks to pigglesworth for noticing
Modified:
trunk/reactos/dll/directx/ddraw/main.c
Modified: trunk/reactos/dll/directx/ddraw/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main.c?r…
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main.c Sun Jun 3 17:06:32 2007
@@ -71,16 +71,16 @@
if (pUnkOuter)
{
/* we are using same error code as MS*/
- return CLASS_E_NOAGGREGATION;
+ retVal = CLASS_E_NOAGGREGATION;
+ }/* Is it a DirectDraw 7 Request or not */
+ else if (!IsEqualGUID(id, &IID_IDirectDraw7))
+ {
+ retVal = DDERR_INVALIDPARAMS;
}
-
- /* Is it a DirectDraw 7 Request or not */
- if (!IsEqualGUID(id, &IID_IDirectDraw7))
+ else
{
- return DDERR_INVALIDPARAMS;
+ retVal = Create_DirectDraw (lpGUID, (LPDIRECTDRAW*)lplpDD, id, TRUE);
}
-
- retVal = Create_DirectDraw (lpGUID, (LPDIRECTDRAW*)lplpDD, id, TRUE);
/* Create our DirectDraw interface */
}
Author: greatlrd
Date: Sat Jun 2 17:26:33 2007
New Revision: 26965
URL: http://svn.reactos.org/svn/reactos?rev=26965&view=rev
Log:
protect DirectDrawCreateEx with seh no more crash
Modified:
trunk/reactos/dll/directx/ddraw/main.c
Modified: trunk/reactos/dll/directx/ddraw/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main.c?r…
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main.c Sat Jun 2 17:26:33 2007
@@ -12,6 +12,9 @@
#include "rosdraw.h"
+/* PSEH for SEH Support */
+#include <pseh/pseh.h>
+
CRITICAL_SECTION ddcs;
// This function is exported by the dll
@@ -55,27 +58,38 @@
REFIID id,
LPUNKNOWN pUnkOuter)
{
+ HRESULT retVal = DDERR_GENERIC;
/*
remove this when UML digram are in place
this api is finish and is working as it should
*/
DX_WINDBG_trace();
- /* check see if pUnkOuter is null or not */
- if (pUnkOuter)
- {
- /* we are using same error code as MS*/
- return CLASS_E_NOAGGREGATION;
- }
-
- /* Is it a DirectDraw 7 Request or not */
- if (!IsEqualGUID(id, &IID_IDirectDraw7))
- {
- return DDERR_INVALIDPARAMS;
- }
-
- /* Create our DirectDraw interface */
- return Create_DirectDraw (lpGUID, (LPDIRECTDRAW*)lplpDD, id, TRUE);
+ _SEH_TRY
+ {
+ /* check see if pUnkOuter is null or not */
+ if (pUnkOuter)
+ {
+ /* we are using same error code as MS*/
+ return CLASS_E_NOAGGREGATION;
+ }
+
+ /* Is it a DirectDraw 7 Request or not */
+ if (!IsEqualGUID(id, &IID_IDirectDraw7))
+ {
+ return DDERR_INVALIDPARAMS;
+ }
+
+ retVal = Create_DirectDraw (lpGUID, (LPDIRECTDRAW*)lplpDD, id, TRUE);
+
+ /* Create our DirectDraw interface */
+ }
+ _SEH_HANDLE
+ {
+ }
+ _SEH_END;
+
+ return retVal;
}
/*