From: Patrick Rudolph Date: Tue, 12 May 2015 18:28:17 +0000 (+0200) Subject: st/nine: Clean GetPrivateData X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=40a8943f53ff42f2a3b782e42d8a79711d814ab8;p=mesa.git st/nine: Clean GetPrivateData Move the assert to return error codes in the correct order. Always set the pSizeOfData to the required buffer size. Fixes failing wine test device.c test_private_data() Reviewed-by: Axel Davy Signed-off-by: Patrick Rudolph --- diff --git a/src/gallium/state_trackers/nine/resource9.c b/src/gallium/state_trackers/nine/resource9.c index bbc8320071b..b6a13e1130d 100644 --- a/src/gallium/state_trackers/nine/resource9.c +++ b/src/gallium/state_trackers/nine/resource9.c @@ -161,20 +161,22 @@ NineResource9_GetPrivateData( struct NineResource9 *This, DWORD *pSizeOfData ) { struct pheader *header; + DWORD sizeofdata; DBG("This=%p refguid=%p pData=%p pSizeOfData=%p\n", This, refguid, pData, pSizeOfData); - user_assert(pSizeOfData, E_POINTER); - header = util_hash_table_get(This->pdata, refguid); if (!header) { return D3DERR_NOTFOUND; } + user_assert(pSizeOfData, E_POINTER); + sizeofdata = *pSizeOfData; + *pSizeOfData = header->size; + if (!pData) { - *pSizeOfData = header->size; return D3D_OK; } - if (*pSizeOfData < header->size) { + if (sizeofdata < header->size) { return D3DERR_MOREDATA; }