I agree on the docs, interestingly enough though, Chessmaster 9000 gives an invalid pointer (0x1) and there's a memory access error.
Works on Windows though, so I'm assuming DX might be allocating the memory on it's own.
On Thu, 2004-07-08 at 19:45, Christian Costa wrote:
Andrei Barbu wrote:
It doesn't have to return that memory, DX functions work by taking parameters they modify. In essence, that's the point, modifying pParameters and returning D3D_OK
Marcus is right. Morover, according to the doc, a pointer to a valid area must be passed as parameter (the prototype confirms that). BTW, what is the problem you intend to fix?
Andrei
On Thu, 2004-07-08 at 15:50, Marcus Meissner wrote:
On Fri, Jul 09, 2004 at 04:39:31AM +0900, Mike McCormack wrote:
You probably want to use a Windows method to allocate memory here, such as HeapAlloc() or CoTaskMemAlloc, as the caller is not going to use free() to free the memory...
Mike
Andrei Barbu wrote:
Changelog:
Fixes a memory access fault inside of D3D8_GetCreationParameters.
...
HRESULT WINAPI IDirect3DDevice8Impl_GetCreationParameters(LPDIRECT3DDEVICE8 iface, D3DDEVICE_CREATION_PARAMETERS *pParameters) { ICOM_THIS(IDirect3DDevice8Impl,iface); TRACE("(%p) copying to %p\n", This, pParameters);
- pParameters = (D3DDEVICE_CREATION_PARAMETERS*) malloc( sizeof(
D3DDEVICE_CREATION_PARAMETERS )); memcpy(pParameters, &This->CreateParms, sizeof(D3DDEVICE_CREATION_PARAMETERS)); return D3D_OK; }
Its also wrong, because the patch just overwrites the pParameters argument and does not return the allocated memory.
Ciao, Marcus