Module: wine Branch: master Commit: 55a4be12f85caa5b12f35845e24500cebc158431 URL: http://source.winehq.org/git/wine.git/?a=commit;h=55a4be12f85caa5b12f35845e2...
Author: Rico Schüller kgbricola@web.de Date: Wed Jul 24 09:51:39 2013 +0200
d3dx9: Fix initialization of D3DXPC_OBJECTs.
---
dlls/d3dx9_36/effect.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index 30ed36c..777a429 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -4637,15 +4637,31 @@ static HRESULT d3dx9_parse_init_value(struct d3dx_parameter *param, const char *
if (size) { - value = HeapAlloc(GetProcessHeap(), 0, size); + value = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); if (!value) { ERR("Failed to allocate data memory.\n"); return E_OUTOFMEMORY; }
- TRACE("Data: %s.\n", debugstr_an(ptr, size)); - memcpy(value, ptr, size); + switch(param->class) + { + case D3DXPC_OBJECT: + break; + + case D3DXPC_SCALAR: + case D3DXPC_VECTOR: + case D3DXPC_MATRIX_ROWS: + case D3DXPC_MATRIX_COLUMNS: + case D3DXPC_STRUCT: + TRACE("Data: %s.\n", debugstr_an(ptr, size)); + memcpy(value, ptr, size); + break; + + default: + FIXME("Unhandled class %s\n", debug_d3dxparameter_class(param->class)); + break; + } }
hr = d3dx9_parse_value(param, value, data, &ptr, objects);