[PATCH 3/8] ddraw: Check for NULL pointers in DeleteViewport
Stefan Dösinger
stefan at codeweavers.com
Sat Jan 26 06:39:44 CST 2013
---
dlls/ddraw/device.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 8b4e1e4..92828aa 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -817,6 +817,12 @@ static HRESULT WINAPI d3d_device3_DeleteViewport(IDirect3DDevice3 *iface, IDirec
TRACE("iface %p, viewport %p.\n", iface, viewport);
+ if (!vp)
+ {
+ WARN("NULL viewport, returning DDERR_INVALIDPARAMS\n");
+ return DDERR_INVALIDPARAMS;
+ }
+
wined3d_mutex_lock();
if (vp->active_device != device)
@@ -841,7 +847,8 @@ static HRESULT WINAPI d3d_device2_DeleteViewport(IDirect3DDevice2 *iface, IDirec
TRACE("iface %p, viewport %p.\n", iface, viewport);
- return d3d_device3_DeleteViewport(&device->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface);
+ return d3d_device3_DeleteViewport(&device->IDirect3DDevice3_iface,
+ vp ? &vp->IDirect3DViewport3_iface : NULL);
}
static HRESULT WINAPI d3d_device1_DeleteViewport(IDirect3DDevice *iface, IDirect3DViewport *viewport)
@@ -851,7 +858,8 @@ static HRESULT WINAPI d3d_device1_DeleteViewport(IDirect3DDevice *iface, IDirect
TRACE("iface %p, viewport %p.\n", iface, viewport);
- return d3d_device3_DeleteViewport(&device->IDirect3DDevice3_iface, &vp->IDirect3DViewport3_iface);
+ return d3d_device3_DeleteViewport(&device->IDirect3DDevice3_iface,
+ vp ? &vp->IDirect3DViewport3_iface : NULL);
}
/*****************************************************************************
--
1.7.12.4
More information about the wine-patches
mailing list