Checks completeness of framebuffer before read operations.
TRAC #12565
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch
Author: Shannon Woods
git-svn-id: https://angleproject.googlecode.com/svn/trunk@362 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 170925a..e1c2300 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -848,7 +848,13 @@
if (context)
{
- gl::Renderbuffer *source = context->getFramebuffer()->getColorbuffer();
+ gl::Framebuffer *framebuffer = context->getFramebuffer();
+ if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
+ {
+ return error(GL_INVALID_FRAMEBUFFER_OPERATION);
+ }
+
+ gl::Renderbuffer *source = framebuffer->getColorbuffer();
if (target == GL_TEXTURE_2D)
{
@@ -916,7 +922,13 @@
if (context)
{
- gl::Renderbuffer *source = context->getFramebuffer()->getColorbuffer();
+ gl::Framebuffer *framebuffer = context->getFramebuffer();
+ if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
+ {
+ return error(GL_INVALID_FRAMEBUFFER_OPERATION);
+ }
+
+ gl::Renderbuffer *source = framebuffer->getColorbuffer();
if (target == GL_TEXTURE_2D)
{