From 328412aa238e337b215a375b04d92a802fcf60e9 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 17 Apr 2016 17:10:42 +0200 Subject: [PATCH] Crash fix - protect against reflection being NULL * This lets renderdoc limp along if the reflection failed to be created (usually because the shader failed to compile as a separable program) --- renderdoc/driver/gl/gl_shader_refl.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp index bf175b795..eaa77cf16 100644 --- a/renderdoc/driver/gl/gl_shader_refl.cpp +++ b/renderdoc/driver/gl/gl_shader_refl.cpp @@ -1854,10 +1854,10 @@ void GetBindpointMapping(const GLHookSet &gl, GLuint curProg, int shadIdx, Shade eGL_REFERENCED_BY_COMPUTE_SHADER, }; - int32_t numResources = refl ? refl->ReadOnlyResources.count : 0; + int32_t numReadOnlyResources = refl ? refl->ReadOnlyResources.count : 0; - create_array_uninit(mapping.ReadOnlyResources, numResources); - for(int32_t i=0; i < numResources; i++) + create_array_uninit(mapping.ReadOnlyResources, numReadOnlyResources); + for(int32_t i=0; i < numReadOnlyResources; i++) { if(refl->ReadOnlyResources.elems[i].IsTexture) { @@ -1906,8 +1906,10 @@ void GetBindpointMapping(const GLHookSet &gl, GLuint curProg, int shadIdx, Shade } } - create_array_uninit(mapping.ReadWriteResources, refl->ReadWriteResources.count); - for(int32_t i=0; i < refl->ReadWriteResources.count; i++) + int32_t numReadWriteResources = refl ? refl->ReadWriteResources.count : 0; + + create_array_uninit(mapping.ReadWriteResources, numReadWriteResources); + for(int32_t i=0; i < numReadWriteResources; i++) { if(refl->ReadWriteResources.elems[i].IsTexture) {