Index: src/includes/replies/functions.php
--- src/includes/replies/functions.php
+++ src/includes/replies/functions.php
@@ -728,30 +728,6 @@
 		// Update counts, etc...
 		do_action( 'bbp_edit_reply', $reply_id, $topic_id, $forum_id, $anonymous_data, $reply_author, true, $reply_to );

-		/** Revisions *********************************************************/
-
-		// Update locks
-		update_post_meta( $reply_id, '_edit_last', bbp_get_current_user_id() );
-		delete_post_meta( $reply_id, '_edit_lock' );
-
-		// Revision Reason
-		if ( ! empty( $_POST['bbp_reply_edit_reason'] ) ) {
-			$reply_edit_reason = sanitize_text_field( $_POST['bbp_reply_edit_reason'] );
-		}
-
-		// Update revision log
-		if ( ! empty( $_POST['bbp_log_reply_edit'] ) && ( '1' === $_POST['bbp_log_reply_edit'] ) ) {
-			$revision_id = wp_save_post_revision( $reply_id );
-			if ( ! empty( $revision_id ) ) {
-				bbp_update_reply_revision_log( array(
-					'reply_id'    => $reply_id,
-					'revision_id' => $revision_id,
-					'author_id'   => bbp_get_current_user_id(),
-					'reason'      => $reply_edit_reason
-				) );
-			}
-		}
-
 		/** Additional Actions (After Save) ***********************************/

 		do_action( 'bbp_edit_reply_post_extras', $reply_id );
@@ -800,6 +776,7 @@
 	$topic_id = bbp_get_topic_id( $topic_id );
 	$forum_id = bbp_get_forum_id( $forum_id );
 	$reply_to = bbp_validate_reply_to( $reply_to, $reply_id );
+	$user_id  = bbp_get_current_user_id();

 	// Bail if there is no reply
 	if ( empty( $reply_id ) ) {
@@ -808,7 +785,7 @@

 	// Check author_id
 	if ( empty( $author_id ) ) {
-		$author_id = bbp_get_current_user_id();
+		$author_id = $user_id;
 	}

 	// Check topic_id
@@ -821,6 +798,15 @@
 		$forum_id = bbp_get_topic_forum_id( $topic_id );
 	}

+	// Update locks
+	update_post_meta( $reply_id, '_edit_last', $user_id );
+	delete_post_meta( $reply_id, '_edit_lock' );
+
+	// Reply meta relating to reply position in tree
+	bbp_update_reply_forum_id( $reply_id, $forum_id );
+	bbp_update_reply_topic_id( $reply_id, $topic_id );
+	bbp_update_reply_to      ( $reply_id, $reply_to );
+
 	// If anonymous post, store name, email, website and ip in post_meta.
 	if ( ! empty( $anonymous_data ) ) {

@@ -854,11 +840,34 @@
 		}
 	}

-	// Reply meta relating to reply position in tree
-	bbp_update_reply_forum_id( $reply_id, $forum_id );
-	bbp_update_reply_topic_id( $reply_id, $topic_id );
-	bbp_update_reply_to      ( $reply_id, $reply_to );
+	// Only if revisions is allowed
+	if ( bbp_allow_revisions() ) {

+		// Always save the revision, even if not logging
+		$revision_id = wp_save_post_revision( $reply_id );
+
+		// Revision succeeded
+		if ( ! empty( $revision_id ) ) {
+
+			// Update revision log
+			if ( ! empty( $_POST['bbp_log_reply_edit'] ) && ( '1' === $_POST['bbp_log_reply_edit'] ) ) {
+
+				// Revision Reason
+				$reply_edit_reason = ! empty( $_POST['bbp_reply_edit_reason'] )
+					? sanitize_text_field( $_POST['bbp_reply_edit_reason'] )
+					: '';
+
+				// Log it
+				bbp_update_reply_revision_log( array(
+					'reply_id'    => $reply_id,
+					'revision_id' => $revision_id,
+					'author_id'   => $user_id,
+					'reason'      => $reply_edit_reason
+				) );
+			}
+		}
+	}
+
 	// Update associated topic values if this is a new reply
 	if ( empty( $is_edit ) ) {

Index: src/includes/topics/functions.php
--- src/includes/topics/functions.php
+++ src/includes/topics/functions.php
@@ -648,30 +648,6 @@
 		// Update counts, etc...
 		do_action( 'bbp_edit_topic', $topic_id, $forum_id, $anonymous_data, $topic_author, true /* Is edit */ );

-		/** Revisions *********************************************************/
-
-		// Update locks
-		update_post_meta( $topic_id, '_edit_last', bbp_get_current_user_id() );
-		delete_post_meta( $topic_id, '_edit_lock' );
-
-		// Revision Reason
-		if ( ! empty( $_POST['bbp_topic_edit_reason'] ) ) {
-			$topic_edit_reason = sanitize_text_field( $_POST['bbp_topic_edit_reason'] );
-		}
-
-		// Update revision log
-		if ( ! empty( $_POST['bbp_log_topic_edit'] ) && ( '1' === $_POST['bbp_log_topic_edit'] ) ) {
-			$revision_id = wp_save_post_revision( $topic_id );
-			if ( ! empty( $revision_id ) ) {
-				bbp_update_topic_revision_log( array(
-					'topic_id'    => $topic_id,
-					'revision_id' => $revision_id,
-					'author_id'   => bbp_get_current_user_id(),
-					'reason'      => $topic_edit_reason
-				) );
-			}
-		}
-
 		/** Move Topic ********************************************************/

 		// If the new forum id is not equal to the old forum id, run the
@@ -733,6 +709,7 @@
 	// Validate the ID's passed from 'bbp_new_topic' action
 	$topic_id = bbp_get_topic_id( $topic_id );
 	$forum_id = bbp_get_forum_id( $forum_id );
+	$user_id  = bbp_get_current_user_id();

 	// Bail if there is no topic
 	if ( empty( $topic_id ) ) {
@@ -741,13 +718,55 @@

 	// Check author_id
 	if ( empty( $author_id ) ) {
-		$author_id = bbp_get_current_user_id();
+		$author_id = $user_id;
 	}

+	// Check forum_id
+	if ( empty( $forum_id ) ) {
+		$forum_id = bbp_get_topic_forum_id( $topic_id );
+	}
+
+	// Update locks
+	update_post_meta( $topic_id, '_edit_last', $user_id );
+	delete_post_meta( $topic_id, '_edit_lock' );
+
 	// Forum/Topic meta (early, for use in downstream functions)
 	bbp_update_topic_forum_id( $topic_id, $forum_id );
 	bbp_update_topic_topic_id( $topic_id, $topic_id );

+	// If anonymous post, store name, email, website and ip in post_meta.
+	if ( ! empty( $anonymous_data ) ) {
+
+		// Update anonymous meta data (not cookies)
+		bbp_update_anonymous_post_author( $topic_id, $anonymous_data, bbp_get_topic_post_type() );
+
+		// Set transient for throttle check (only on new, not edit)
+		if ( empty( $is_edit ) ) {
+			set_transient( '_bbp_' . bbp_current_author_ip() . '_last_posted', time(), HOUR_IN_SECONDS );
+		}
+	}
+
+	// Handle Subscription Checkbox
+	if ( bbp_is_subscriptions_active() && ! empty( $author_id ) ) {
+
+		// Check if subscribed
+		$subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
+
+		// Check for action
+		$subscheck  = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) )
+			? true
+			: false;
+
+		// Subscribed and unsubscribing
+		if ( ( true === $subscribed ) && ( false === $subscheck ) ) {
+			bbp_remove_user_subscription( $author_id, $topic_id );
+
+		// Not subscribed and subscribing
+		} elseif ( ( false === $subscribed ) && ( true === $subscheck ) ) {
+			bbp_add_user_subscription( $author_id, $topic_id );
+		}
+	}
+
 	// Get the topic types
 	$topic_types = bbp_get_topic_types( $topic_id );

@@ -779,36 +798,31 @@
 		}
 	}

-	// If anonymous post, store name, email, website and ip in post_meta.
-	if ( ! empty( $anonymous_data ) ) {
+	// Only if revisions is allowed
+	if ( bbp_allow_revisions() ) {

-		// Update anonymous meta data (not cookies)
-		bbp_update_anonymous_post_author( $topic_id, $anonymous_data, bbp_get_topic_post_type() );
+		// Always save the revision, even if not logging
+		$revision_id = wp_save_post_revision( $topic_id );

-		// Set transient for throttle check (only on new, not edit)
-		if ( empty( $is_edit ) ) {
-			set_transient( '_bbp_' . bbp_current_author_ip() . '_last_posted', time(), HOUR_IN_SECONDS );
-		}
-	}
+		// Revision succeeded
+		if ( ! empty( $revision_id ) ) {

-	// Handle Subscription Checkbox
-	if ( bbp_is_subscriptions_active() && ! empty( $author_id ) ) {
+			// Maybe logging revision
+			if ( ! empty( $_POST['bbp_log_topic_edit'] ) && ( '1' === $_POST['bbp_log_topic_edit'] ) ) {

-		// Check if subscribed
-		$subscribed = bbp_is_user_subscribed( $author_id, $topic_id );
+				// Revision Reason
+				$topic_edit_reason = ! empty( $_POST['bbp_topic_edit_reason'] )
+					? sanitize_text_field( $_POST['bbp_topic_edit_reason'] )
+					: '';

-		// Check for action
-		$subscheck  = ( ! empty( $_POST['bbp_topic_subscription'] ) && ( 'bbp_subscribe' === $_POST['bbp_topic_subscription'] ) )
-			? true
-			: false;
-
-		// Subscribed and unsubscribing
-		if ( ( true === $subscribed ) && ( false === $subscheck ) ) {
-			bbp_remove_user_subscription( $author_id, $topic_id );
-
-		// Not subscribed and subscribing
-		} elseif ( ( false === $subscribed ) && ( true === $subscheck ) ) {
-			bbp_add_user_subscription( $author_id, $topic_id );
+				// Log it
+				bbp_update_topic_revision_log( array(
+					'topic_id'    => $topic_id,
+					'revision_id' => $revision_id,
+					'author_id'   => $user_id,
+					'reason'      => $topic_edit_reason
+				) );
+			}
 		}
 	}
