Commit ed54e5db by Gregoire Payen de La Garanderie Committed by Jamie Madill

Fix framebuffer zero used after being destroyed in Context destructor.

BUG=angleproject:950 Change-Id: I06e9e6ccf92ee8ca0b1de98cc48ef68a85107214 Reviewed-on: https://chromium-review.googlesource.com/260573Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarGregoire Payen de La Garanderie <Gregory.Payen@imgtec.com>
parent e79904c3
...@@ -133,7 +133,8 @@ Context::~Context() ...@@ -133,7 +133,8 @@ Context::~Context()
while (!mFramebufferMap.empty()) while (!mFramebufferMap.empty())
{ {
deleteFramebuffer(mFramebufferMap.begin()->first); // Delete the framebuffer in reverse order to destroy the framebuffer zero last.
deleteFramebuffer(mFramebufferMap.rbegin()->first);
} }
while (!mFenceNVMap.empty()) while (!mFenceNVMap.empty())
...@@ -1346,12 +1347,12 @@ void Context::detachFramebuffer(GLuint framebuffer) ...@@ -1346,12 +1347,12 @@ void Context::detachFramebuffer(GLuint framebuffer)
// If a framebuffer that is currently bound to the target FRAMEBUFFER is deleted, it is as though // If a framebuffer that is currently bound to the target FRAMEBUFFER is deleted, it is as though
// BindFramebuffer had been executed with the target of FRAMEBUFFER and framebuffer of zero. // BindFramebuffer had been executed with the target of FRAMEBUFFER and framebuffer of zero.
if (mState.removeReadFramebufferBinding(framebuffer)) if (mState.removeReadFramebufferBinding(framebuffer) && framebuffer != 0)
{ {
bindReadFramebuffer(0); bindReadFramebuffer(0);
} }
if (mState.removeDrawFramebufferBinding(framebuffer)) if (mState.removeDrawFramebufferBinding(framebuffer) && framebuffer != 0)
{ {
bindDrawFramebuffer(0); bindDrawFramebuffer(0);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment