[vlc-commits] gl: vaapi: fix VADisplay leak in error path
Thomas Guillem
git at videolan.org
Fri Jun 30 12:33:50 CEST 2017
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Thu Jun 29 16:55:58 2017 +0200| [4d767a78d54a8ddde56ea24824c299d47fa522d8] | committer: Thomas Guillem
gl: vaapi: fix VADisplay leak in error path
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4d767a78d54a8ddde56ea24824c299d47fa522d8
---
modules/video_output/opengl/converter_vaapi.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/modules/video_output/opengl/converter_vaapi.c b/modules/video_output/opengl/converter_vaapi.c
index c6ff72fd8e..03987a8e34 100644
--- a/modules/video_output/opengl/converter_vaapi.c
+++ b/modules/video_output/opengl/converter_vaapi.c
@@ -296,10 +296,12 @@ tc_vaegl_init(opengl_tex_converter_t *tc, VADisplay *vadpy)
if (vadpy == NULL)
return VLC_EGENERIC;
+ int ret = VLC_ENOMEM;
struct priv *priv = tc->priv = calloc(1, sizeof(struct priv));
if (unlikely(tc->priv == NULL))
- return VLC_ENOMEM;
+ goto error;
+ ret = VLC_EGENERIC;
priv->vadpy = vadpy;
priv->fourcc = 0;
@@ -326,14 +328,12 @@ tc_vaegl_init(opengl_tex_converter_t *tc, VADisplay *vadpy)
goto error;
if (tc_va_check_interop_blacklist(tc, priv->vadpy))
- {
- vaTerminate(priv->vadpy);
goto error;
- }
if (vlc_vaapi_SetInstance(priv->vadpy))
{
msg_Err(tc->gl, "VAAPI instance already in use");
+ vadpy = NULL;
goto error;
}
@@ -342,13 +342,16 @@ tc_vaegl_init(opengl_tex_converter_t *tc, VADisplay *vadpy)
if (tc->fshader == 0)
{
vlc_vaapi_ReleaseInstance(priv->vadpy);
+ vadpy = NULL;
goto error;
}
return VLC_SUCCESS;
error:
+ if (vadpy != NULL)
+ vaTerminate(vadpy);
free(tc->priv);
- return VLC_EGENERIC;
+ return ret;
}
int
More information about the vlc-commits
mailing list