On 14.02.2017 22:56, Stefan Dösinger wrote:
This fixes compilation on Visual Studio with native compiler exceptions.
Signed-off-by: Stefan Dösinger <stefandoesinger(a)gmx.at>
While you are just at it, please note that this code also contains a leak when the exception is triggered. Actually, it would probably be easier to test if the pointer is writeable in advance, and exit early without creating the surface at all.
--- dlls/ddraw/ddraw.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 254dae7..54f3817 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -2836,11 +2836,13 @@ static HRESULT WINAPI ddraw7_CreateSurface(IDirectDraw7 *iface, DDSURFACEDESC2 * if (FAILED(hr)) { *surface = NULL; - break; } - *surface = &impl->IDirectDrawSurface7_iface; - IDirectDraw7_AddRef(iface); - impl->ifaceToRelease = (IUnknown *)iface; + else + { + *surface = &impl->IDirectDrawSurface7_iface; + IDirectDraw7_AddRef(iface); + impl->ifaceToRelease = (IUnknown *)iface; + } } __EXCEPT_PAGE_FAULT { @@ -2898,11 +2900,13 @@ static HRESULT WINAPI ddraw4_CreateSurface(IDirectDraw4 *iface, if (FAILED(hr)) { *surface = NULL; - break; } - *surface = &impl->IDirectDrawSurface4_iface; - IDirectDraw4_AddRef(iface); - impl->ifaceToRelease = (IUnknown *)iface; + else + { + *surface = &impl->IDirectDrawSurface4_iface; + IDirectDraw4_AddRef(iface); + impl->ifaceToRelease = (IUnknown *)iface; + } } __EXCEPT_PAGE_FAULT { @@ -2962,10 +2966,12 @@ static HRESULT WINAPI ddraw2_CreateSurface(IDirectDraw2 *iface, if (FAILED(hr)) { *surface = NULL; - break; } - *surface = &impl->IDirectDrawSurface_iface; - impl->ifaceToRelease = NULL; + else + { + *surface = &impl->IDirectDrawSurface_iface; + impl->ifaceToRelease = NULL; + } } __EXCEPT_PAGE_FAULT { @@ -3022,10 +3028,12 @@ static HRESULT WINAPI ddraw1_CreateSurface(IDirectDraw *iface, if (FAILED(hr)) { *surface = NULL; - break; } - *surface = &impl->IDirectDrawSurface_iface; - impl->ifaceToRelease = NULL; + else + { + *surface = &impl->IDirectDrawSurface_iface; + impl->ifaceToRelease = NULL; + } } __EXCEPT_PAGE_FAULT {