unreference old framebuffer, if needed, in _mesa_reference_framebuffer()
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index c97d2f0..3136a95 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -253,6 +253,13 @@
                             struct gl_framebuffer *fb)
 {
    assert(ptr);
+   if (*ptr == fb) {
+      /* no change */
+      return;
+   }
+   if (*ptr) {
+      _mesa_unreference_framebuffer(ptr);
+   }
    assert(!*ptr);
    assert(fb);
    _glthread_LOCK_MUTEX(fb->Mutex);