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 > >> > >> > >> > > > > > > > > > >
signature.asc
Description: This is a digitally signed message part