> The best thing to do is add an internal reference instead of referencing the parent. e.g. > if (pShader != NULL) { > IWineD3DVertexShader_AddRef(pShader); > } > if (oldShader != NULL) { > IWineD3DVertexShader_Release(oldShader); > } Is that reference really needed?