[PATCH 4/8] ddraw: Check for NULL pointers in SetCurrentViewport

Stefan Dösinger stefan at codeweavers.com
Sat Jan 26 06:39:45 CST 2013


---
 dlls/ddraw/device.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 92828aa..a65df42 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -1703,9 +1703,15 @@ static HRESULT WINAPI d3d_device3_SetCurrentViewport(IDirect3DDevice3 *iface, ID
 
     TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport3);
 
+    if (!vp)
+    {
+        WARN("Direct3DViewport3 is NULL, returning DDERR_INVALIDPARAMS\n");
+        return DDERR_INVALIDPARAMS;
+    }
+
     wined3d_mutex_lock();
     /* Do nothing if the specified viewport is the same as the current one */
-    if (This->current_viewport == vp )
+    if (This->current_viewport == vp)
     {
         wined3d_mutex_unlock();
         return D3D_OK;
@@ -1745,7 +1751,8 @@ static HRESULT WINAPI d3d_device2_SetCurrentViewport(IDirect3DDevice2 *iface, ID
 
     TRACE("iface %p, viewport %p.\n", iface, viewport);
 
-    return d3d_device3_SetCurrentViewport(&device->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface);
+    return d3d_device3_SetCurrentViewport(&device->IDirect3DDevice3_iface,
+            vp ? &vp->IDirect3DViewport3_iface : NULL);
 }
 
 /*****************************************************************************
-- 
1.7.12.4




More information about the wine-patches mailing list