Andrei Barbu wrote:
Marcus is right.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
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