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 <axel.davy@ens.fr> Signed-off-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
committed by
Axel Davy
parent
9ba3f83592
commit
40a8943f53
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user