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)
             {