Index: apachesolr_search.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/apachesolr_search.module,v
retrieving revision 1.1.2.6.2.111.4.34
diff -u -p -r1.1.2.6.2.111.4.34 apachesolr_search.module
--- apachesolr_search.module	30 Apr 2010 16:17:00 -0000	1.1.2.6.2.111.4.34
+++ apachesolr_search.module	30 Apr 2010 20:56:58 -0000
@@ -829,9 +829,22 @@ function apachesolr_search_get_type($fac
 
 /**
  * Process a block search form submission.
+ *
+ * @see search_box_form_submit()
  */
 function apachesolr_search_search_box_form_submit($form_id, $form_values) {
-  $keys = $form_values[$form_id];
+  // The search form relies on control of the redirect destination for its
+  // functionality, so we override any static destination set in the request,
+  // for example by drupal_access_denied() or drupal_not_found()
+  // (see http://drupal.org/node/292565).
+  if (isset($_REQUEST['destination'])) {
+    unset($_REQUEST['destination']);
+  }
+  if (isset($_REQUEST['edit']['destination'])) {
+    unset($_REQUEST['edit']['destination']);
+  }
+
+  $keys = $form_values[$form_id .'_keys'];
   // Handle Apache webserver clean URL quirks.
   if (variable_get('clean_url', '0')) {
     $keys = str_replace('+', '%2B', $keys);
