[vlc-commits] d3d11: Reorder initializations to avoid potential handle leak
Hugo Beauzée-Luyssen
git at videolan.org
Tue Feb 14 15:38:00 CET 2017
vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Tue Feb 14 15:24:36 2017 +0100| [f4988045ec16eac5bc9c8aadb01cf59a7773ddd6] | committer: Jean-Baptiste Kempf
d3d11: Reorder initializations to avoid potential handle leak
CID #1402713
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f4988045ec16eac5bc9c8aadb01cf59a7773ddd6
---
modules/video_output/win32/direct3d11.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 301cdcc..ac30f41 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -413,26 +413,23 @@ static void Direct3D11UnmapPoolTexture(picture_t *picture)
#if !VLC_WINSTORE_APP
static int OpenHwnd(vout_display_t *vd)
{
- HINSTANCE hd3d11_dll = LoadLibrary(TEXT("D3D11.DLL"));
- if (!hd3d11_dll) {
+ vout_display_sys_t *sys = vd->sys = calloc(1, sizeof(vout_display_sys_t));
+ if (!sys)
+ return VLC_ENOMEM;
+
+ sys->hd3d11_dll = LoadLibrary(TEXT("D3D11.DLL"));
+ if (!sys->hd3d11_dll) {
msg_Warn(vd, "cannot load d3d11.dll, aborting");
return VLC_EGENERIC;
}
- HINSTANCE hd3dcompiler_dll = Direct3D11LoadShaderLibrary();
- if (!hd3dcompiler_dll) {
+ sys->hd3dcompiler_dll = Direct3D11LoadShaderLibrary();
+ if (!sys->hd3dcompiler_dll) {
msg_Err(vd, "cannot load d3dcompiler.dll, aborting");
Direct3D11Destroy(vd);
return VLC_EGENERIC;
}
- vout_display_sys_t *sys = vd->sys = calloc(1, sizeof(vout_display_sys_t));
- if (!sys)
- return VLC_ENOMEM;
-
- sys->hd3d11_dll = hd3d11_dll;
- sys->hd3dcompiler_dll = hd3dcompiler_dll;
-
sys->OurD3DCompile = (void *)GetProcAddress(sys->hd3dcompiler_dll, "D3DCompile");
if (!sys->OurD3DCompile) {
msg_Err(vd, "Cannot locate reference to D3DCompile in d3dcompiler DLL");
@@ -441,7 +438,7 @@ static int OpenHwnd(vout_display_t *vd)
}
sys->OurD3D11CreateDevice =
- (void *)GetProcAddress(hd3d11_dll, "D3D11CreateDevice");
+ (void *)GetProcAddress(sys->hd3d11_dll, "D3D11CreateDevice");
if (!sys->OurD3D11CreateDevice) {
msg_Err(vd, "Cannot locate reference to D3D11CreateDevice in d3d11 DLL");
Direct3D11Destroy(vd);
More information about the vlc-commits
mailing list