--- form.inc (saved version)
+++ (current document)
@@ -624,6 +624,12 @@
   }
   if (!isset($goto) || ($goto !== FALSE)) {
     if (isset($goto)) {
+      // Remove any fake destination set by drupal_not_found() or
+      // drupal_access_denied() so that we can properly redirect from those
+      // pages.
+      if (isset($_REQUEST['destination']) && $_REQUEST['destination'] == $_GET['q']) {
+        unset($_REQUEST['destination']);
+      }
       if (is_array($goto)) {
         call_user_func_array('drupal_goto', $goto);
       }
