=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: wined3d: Correctly handle the size parameter in get_private_data.

Alexandre Julliard julliard at winehq.org
Wed Mar 12 15:23:43 CDT 2014


Module: wine
Branch: master
Commit: 3754cdd7931ebd078caeba64714a3312dd66b59c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3754cdd7931ebd078caeba64714a3312dd66b59c

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Mar 12 14:08:23 2014 +0100

wined3d: Correctly handle the size parameter in get_private_data.

---

 dlls/wined3d/resource.c |   15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index 04c3af4..8813af7 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -250,18 +250,21 @@ HRESULT CDECL wined3d_resource_get_private_data(const struct wined3d_resource *r
         void *data, DWORD *data_size)
 {
     const struct private_data *d;
+    DWORD size_in;
 
     TRACE("resource %p, guid %s, data %p, data_size %p.\n",
             resource, debugstr_guid(guid), data, data_size);
 
     d = resource_find_private_data(resource, guid);
-    if (!d) return WINED3DERR_NOTFOUND;
-
-    if (*data_size < d->size)
-    {
-        *data_size = d->size;
+    if (!d)
+        return WINED3DERR_NOTFOUND;
+
+    size_in = *data_size;
+    *data_size = d->size;
+    if (!data)
+        return WINED3D_OK;
+    if (size_in < d->size)
         return WINED3DERR_MOREDATA;
-    }
 
     if (d->flags & WINED3DSPD_IUNKNOWN)
     {




More information about the wine-cvs mailing list