From fc5f36f037ec2f807cf748d3083432b0b600c14b Mon Sep 17 00:00:00 2001 From: "H. Verbeet" Date: Thu, 8 Mar 2007 01:16:09 +0100 Subject: [PATCH] wined3d: Fix IWineD3DPixelShader_GetFunction / IWineD3DVertexShader_GetFunction. --- dlls/wined3d/pixelshader.c | 6 ++++-- dlls/wined3d/vertexshader.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c index b49f6d14c91..dba2f349b26 100644 --- a/dlls/wined3d/pixelshader.c +++ b/dlls/wined3d/pixelshader.c @@ -127,8 +127,10 @@ static HRESULT WINAPI IWineD3DPixelShaderImpl_GetFunction(IWineD3DPixelShader* return WINED3D_OK; } if (*pSizeOfData < This->baseShader.functionLength) { - *pSizeOfData = This->baseShader.functionLength; - return WINED3DERR_MOREDATA; + /* MSDN claims (for d3d8 at least) that if *pSizeOfData is smaller + * than the required size we should write the required size and + * return D3DERR_MOREDATA. That's not actually true. */ + return WINED3DERR_INVALIDCALL; } if (NULL == This->baseShader.function) { /* no function defined */ TRACE("(%p) : GetFunction no User Function defined using NULL to %p\n", This, pData); diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c index f812306d146..5d3a50638d1 100644 --- a/dlls/wined3d/vertexshader.c +++ b/dlls/wined3d/vertexshader.c @@ -521,8 +521,10 @@ static HRESULT WINAPI IWineD3DVertexShaderImpl_GetFunction(IWineD3DVertexShader* return WINED3D_OK; } if (*pSizeOfData < This->baseShader.functionLength) { - *pSizeOfData = This->baseShader.functionLength; - return WINED3DERR_MOREDATA; + /* MSDN claims (for d3d8 at least) that if *pSizeOfData is smaller + * than the required size we should write the required size and + * return D3DERR_MOREDATA. That's not actually true. */ + return WINED3DERR_INVALIDCALL; } if (NULL == This->baseShader.function) { /* no function defined */ TRACE("(%p) : GetFunction no User Function defined using NULL to %p\n", This, pData); -- 2.11.4.GIT