Module: wine Branch: master Commit: 3754cdd7931ebd078caeba64714a3312dd66b59c URL: http://source.winehq.org/git/wine.git/?a=commit;h=3754cdd7931ebd078caeba6471...
Author: Stefan Dösinger stefan@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) {