wined3d: Don't free backends if they're not created yet.
This would crash if CreateAdditionalSwapChain() failed.
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index e1e01e2..69a7642 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2259,9 +2259,15 @@
IWineD3DStateBlock_Release((IWineD3DStateBlock *) This->stateBlock);
This->stateBlock = NULL;
}
- This->blitter->free_private(iface);
- This->frag_pipe->free_private(iface);
- This->shader_backend->shader_free_private(iface);
+ if (This->blit_priv) {
+ This->blitter->free_private(iface);
+ }
+ if (This->fragment_priv) {
+ This->frag_pipe->free_private(iface);
+ }
+ if (This->shader_priv) {
+ This->shader_backend->shader_free_private(iface);
+ }
return hr;
}