From c15ea2f1edb840cda612c6ddbe2c3a142a0e1ee0 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 7 Sep 2017 11:45:43 +1000 Subject: [PATCH] D3D: Fix crash if shaders fail to compile --- Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp | 2 +- Source/Core/VideoBackends/D3D/PixelShaderCache.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp b/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp index d712761a12..5f4072022b 100644 --- a/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp @@ -251,7 +251,7 @@ bool GeometryShaderCache::CompileShader(const GeometryShaderUid& uid) ShaderCode code = GenerateGeometryShaderCode(APIType::D3D, ShaderHostConfig::GetCurrent(), uid.GetUidData()); if (!D3D::CompileGeometryShader(code.GetBuffer(), &bytecode) || - !InsertByteCode(uid, bytecode->Data(), bytecode->Size())) + !InsertByteCode(uid, bytecode ? bytecode->Data() : nullptr, bytecode ? bytecode->Size() : 0)) { SAFE_RELEASE(bytecode); return false; diff --git a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp index 326f840db1..3625cf4e0c 100644 --- a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp @@ -644,7 +644,7 @@ bool PixelShaderCache::SetShader() ShaderCode code = GeneratePixelShaderCode(APIType::D3D, ShaderHostConfig::GetCurrent(), uid.GetUidData()); D3D::CompilePixelShader(code.GetBuffer(), &bytecode); - if (!InsertByteCode(uid, bytecode->Data(), bytecode->Size())) + if (!InsertByteCode(uid, bytecode ? bytecode->Data() : nullptr, bytecode ? bytecode->Size() : 0)) { SAFE_RELEASE(bytecode); return false; @@ -687,7 +687,7 @@ bool PixelShaderCache::SetUberShader() ShaderCode code = UberShader::GenPixelShader(APIType::D3D, ShaderHostConfig::GetCurrent(), uid.GetUidData()); D3D::CompilePixelShader(code.GetBuffer(), &bytecode); - if (!InsertByteCode(uid, bytecode->Data(), bytecode->Size())) + if (!InsertByteCode(uid, bytecode ? bytecode->Data() : nullptr, bytecode ? bytecode->Size() : 0)) { SAFE_RELEASE(bytecode); return false;