[PATCH 1/5] wined3d: Check parameters directly in wined3d_surface_update_desc.

Stefan Dösinger stefan at codeweavers.com
Tue Jan 7 06:53:44 CST 2014


---
 dlls/wined3d/surface.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 2fca299..9155c6b 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2810,15 +2810,17 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
     struct wined3d_device *device = surface->resource.device;
     const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
     const struct wined3d_format *format = wined3d_get_format(gl_info, format_id);
-    UINT resource_size = wined3d_format_calculate_size(format, device->surface_alignment, width, height, 1);
     BOOL create_dib = FALSE;
     HRESULT hr;
 
     TRACE("surface %p, width %u, height %u, format %s, multisample_type %#x, multisample_quality %u.\n",
             surface, width, height, debug_d3dformat(format_id), multisample_type, multisample_type);
 
-    if (!resource_size)
+    if (!width || !height || !format)
+    {
+        WARN("Width, height or format are 0, returning WINED3DERR_INVALIDCALL.\n");
         return WINED3DERR_INVALIDCALL;
+    }
 
     if (device->d3d_initialized)
         surface->resource.resource_ops->resource_unload(&surface->resource);
@@ -2861,7 +2863,7 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
     surface->resource.format = format;
     surface->resource.multisample_type = multisample_type;
     surface->resource.multisample_quality = multisample_quality;
-    surface->resource.size = resource_size;
+    surface->resource.size = wined3d_format_calculate_size(format, device->surface_alignment, width, height, 1);
 
     if (create_dib)
     {
-- 
1.8.3.2




More information about the wine-patches mailing list