Fix accessing null pointer when no uniform buffer is bound.
Bug b/30838145
Change-Id: I06aeafa6e7a8aefbc1d4447a9d2607895d07a096
Reviewed-on: https://swiftshader-review.googlesource.com/6950
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/Program.cpp b/src/OpenGL/libGLESv2/Program.cpp
index 0027996..1da918a 100644
--- a/src/OpenGL/libGLESv2/Program.cpp
+++ b/src/OpenGL/libGLESv2/Program.cpp
@@ -1178,9 +1178,14 @@
for(unsigned int bufferBindingIndex = 0; bufferBindingIndex < MAX_UNIFORM_BUFFER_BINDINGS; bufferBindingIndex++)
{
int index = vertexUniformBuffers[bufferBindingIndex];
- device->VertexProcessor::setUniformBuffer(bufferBindingIndex, (index != -1) ? uniformBuffers[index].get()->getResource() : nullptr, (index != -1) ? uniformBuffers[index].getOffset() : 0);
- index = fragmentUniformBuffers[bufferBindingIndex];
- device->PixelProcessor::setUniformBuffer(bufferBindingIndex, (index != -1) ? uniformBuffers[index].get()->getResource() : nullptr, (index != -1) ? uniformBuffers[index].getOffset() : 0);
+ const gl::BindingPointer<Buffer> &buffer = uniformBuffers[index].get();
+
+ if(buffer)
+ {
+ device->VertexProcessor::setUniformBuffer(bufferBindingIndex, (index != -1) ? buffer->getResource() : nullptr, (index != -1) ? uniformBuffers[index].getOffset() : 0);
+ index = fragmentUniformBuffers[bufferBindingIndex];
+ device->PixelProcessor::setUniformBuffer(bufferBindingIndex, (index != -1) ? buffer->getResource() : nullptr, (index != -1) ? uniformBuffers[index].getOffset() : 0);
+ }
}
}