Index: bbp-general-template.php
===================================================================
--- bbp-general-template.php	(revision 2824)
+++ bbp-general-template.php	(working copy)
@@ -355,15 +355,18 @@
  * @since bbPress (r2815)
  *
  * @param string $url Pass a URL to redirect to
- * @uses home_url() To get the url
+ * @uses wp_get_referer() To get the referer
+ * @uses esc_attr() To escape the url
  * @uses apply_filters() Calls 'bbp_redirect_to_field' with the referer field
  *                        and url
  */
 function bbp_redirect_to_field( $url = '' ) {
-	// If no URL is passed, use request
-	if ( empty( $url ) && !empty( $_SERVER['HTTP_REFERER'] ) )
-		$url = esc_url( $_SERVER['HTTP_REFERER'] );
+	// If no URL is passed, try to get the referer and then the request uri
+	if ( empty( $url ) && !$url = wp_get_referer() && !empty( $_SERVER['REQUEST_URI'] ) )
+		$url = $_SERVER['REQUEST_URI'];
 
+	$url = (string) esc_attr( $url );
+
 	$referer_field = '<input type="hidden" name="redirect_to" value="' . $url . '" />';
 
 	echo apply_filters( 'bbp_redirect_to_field', $referer_field, $url );
@@ -410,14 +413,14 @@
 
 		// Treat different kinds of fields in different ways
 		switch ( $input_type ) {
-			case 'text' :
+			case 'text'     :
 			case 'textarea' :
 				$retval = esc_attr( stripslashes( $pre_ret_val ) );
 				break;
 
 			case 'password' :
-			case 'select' :
-			case 'radio' :
+			case 'select'   :
+			case 'radio'    :
 			case 'checkbox' :
 			default :
 				$retval = esc_attr( $pre_ret_val );
