summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHui Jin <jhuix0117@gmail.com>2019-07-26 13:28:00 +0800
committerJames Ross-Gowan <rossy@jrg.systems>2019-09-14 21:35:49 +1000
commitfda45f4537b82ee4566e475367c78935da8cdc90 (patch)
tree5d2e7e9bd3841d04163a80ffc9c45ccfd5224a75
parent191737b9c99e7ce3fa2796a5c4963eab73d7de13 (diff)
downloadmpv-fda45f4537b82ee4566e475367c78935da8cdc90.tar.bz2
mpv-fda45f4537b82ee4566e475367c78935da8cdc90.tar.xz
vo_d3d11/context: fix crash due to ctx->ra is null pointer access
'ctx->ra' is null pointer when d3d11 init failed before call 'ra_d3d11_create' in 'd3d11_init'.
-rw-r--r--video/out/d3d11/context.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/video/out/d3d11/context.c b/video/out/d3d11/context.c
index 82c7d162f7..3b0ab49812 100644
--- a/video/out/d3d11/context.c
+++ b/video/out/d3d11/context.c
@@ -161,14 +161,16 @@ static void d3d11_uninit(struct ra_ctx *ctx)
{
struct priv *p = ctx->priv;
- ra_tex_free(ctx->ra, &p->backbuffer);
+ if (ctx->ra)
+ ra_tex_free(ctx->ra, &p->backbuffer);
SAFE_RELEASE(p->swapchain);
vo_w32_uninit(ctx->vo);
SAFE_RELEASE(p->device);
// Destory the RA last to prevent objects we hold from showing up in D3D's
// leak checker
- ctx->ra->fns->destroy(ctx->ra);
+ if (ctx->ra)
+ ctx->ra->fns->destroy(ctx->ra);
}
static const struct ra_swapchain_fns d3d11_swapchain = {