Index: content_moderation/content_moderation.module
===================================================================
--- content_moderation/content_moderation.module	(revision 201)
+++ content_moderation/content_moderation.module	(working copy)
@@ -97,8 +97,13 @@
             $links['live_view'] = 'node/'.$live->nid;
           }
           $links['edit_state'] = _content_moderation_change_state_link($node->vid,$node->nid);
-          $links['compare_with_live'] = "node/{$node->nid}/revisions/view/{$node->vid}/{$live->vid}";
+          
+          $check_revisions = _content_moderation_get_latest_revisions($node->nid, 2);
 
+          $rev_url = _content_moderation_determine_revision_url($check_revisions, $node->nid, $node->vid, FALSE);
+          
+          $links['compare_with_live'] = $rev_url . $live->vid;
+
           // Get the state of the currently view revision
           $state = ucfirst(_content_moderation_current_state($node->vid));
 
@@ -395,11 +400,13 @@
     $user = user_load($e->uid);
     $state_class = "state_{$e->state_name}";
     // TODO: proper localized date format
+    $revisions = _content_moderation_get_latest_revisions($e->nid, 2);
+    $rev_url = _content_moderation_determine_revision_url($revisions, $e->nid, $e->vid);
     $data[] = array (
       format_date($e->stamp,'small'),                         // date
       l($user->name,"user/{$user->uid}"),                     // Who changed that state?
       "<span class='$state_class'>".ucfirst(t('!old',array('!old' => $e->old_state_name))).' -> '.ucfirst(t($e->state_name)).'</span>',             // Transition
-      l($e->vid,"node/{$e->nid}/revisions/{$e->vid}/view")   // revision
+      l($e->vid,$rev_url)   // revision
     );
   }
   $title = t('Moderation history');
@@ -704,12 +711,27 @@
 }
 
 function _content_moderation_show_latest_revision($node) {
-  $revisions = _content_moderation_get_latest_revisions($node->nid,1);
+  $revisions = _content_moderation_get_latest_revisions($node->nid, 2);
   $node = node_load($node->nid,$revisions[0]->vid);
-  menu_set_active_item("node/{$node->nid}/revisions/{$node->vid}/view");
+  $rev_url = _content_moderation_determine_revision_url($revisions, $node->nid, $node->vid);
+  menu_set_active_item($rev_url);
   return node_page_view($node);
 }
 
+// created from issue #792202
+function _content_moderation_determine_revision_url($revisions, $nid, $vid, $view = TRUE) {
+  if (count($revisions) == 1) {
+    $rev_url = "node/{$nid}";
+  }
+  else {
+    $rev_url = "node/{$nid}/revisions/{$vid}/";
+    if ($view == TRUE) {
+        $rev_url .= "view";
+    }
+  }
+  return $rev_url;
+}
+
 function _content_moderation_has_moderated_revisions($nid) {
   $none_state = _content_moderation_none_state();
   $live_state = _content_moderation_live_state();
Index: content_moderation/content_moderation.workflow.inc
===================================================================
--- content_moderation/content_moderation.workflow.inc	(revision 201)
+++ content_moderation/content_moderation.workflow.inc	(working copy)
@@ -56,7 +56,11 @@
   $form['buttons']['submit']            = array ('#type'=>'submit', '#value'=>t('Save'));
   $form['buttons']['cancel']['#type']   = 'markup';
   $form['buttons']['cancel']['#weight'] = 2000;
-  $form['buttons']['cancel']['#value']  = l(t('Cancel'), "node/$nid/revisions/$vid/view", array( 'attributes' => array( 'class' => 'form-submit form-submit-cancel')));
+  
+  $revisions = _content_moderation_get_latest_revisions($nid, 2);
+  $rev_url = _content_moderation_determine_revision_url($revisions, $nid, $vid);
+  
+  $form['buttons']['cancel']['#value']  = l(t('Cancel'), $rev_url, array( 'attributes' => array( 'class' => 'form-submit form-submit-cancel')));
   return $form;
 }
 
@@ -94,16 +98,20 @@
     _content_moderation_set_live($node->vid,$node->nid);
     drupal_set_message(t("This revision !vid has now been published as the new live version.", array('!vid' => $node->vid)));
   }
-
+  
   // History entry.
   _content_moderation_save_history($node,$curstate,$nextstate,$user->uid,$comment);
   drupal_set_message(t('The revisions state has been successfully updated to @state',array('@state' => $nextstate)));
-
+  
+  // If the state is live OR there is only one revision (issue 792202)
+  $revisions = _content_moderation_get_latest_revisions($node->nid, 2);
+  $rev_url = _content_moderation_determine_revision_url($revisions, $node->nid, $node->vid);
   if($nextstate == 'live') {
     drupal_goto('node/'.$node->nid);
   }
   else {
-    drupal_goto("node/{$node->nid}/revisions/{$node->vid}/view");
+    // not live status OR more than one revision
+    drupal_goto($rev_url);
   }
 }
 
Index: content_moderation/content_moderation_info_block.tpl.php
===================================================================
--- content_moderation/content_moderation_info_block.tpl.php	(revision 201)
+++ content_moderation/content_moderation_info_block.tpl.php	(working copy)
@@ -32,9 +32,12 @@
 
 }
 
-$view_current_link = l($view_icon,"node/{$node->nid}/revisions/{$node->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
-$current_rev_link = l($node->vid,"node/{$node->nid}/revisions/{$node->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
+$revisions = _content_moderation_get_latest_revisions($node->nid, 2);
+$rev_url = _content_moderation_determine_revision_url($revisions, $node->nid, $node->vid);
 
+$view_current_link = l($view_icon,$rev_url,array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
+$current_rev_link = l($node->vid,$rev_url,array('html' => true, 'attributes' => array( 'title' => t('View this revision.') ) ));
+
 if(module_exists('diff')){
   $compare_live = l($rev_icon,$links['compare_with_live'],array('html' => true, 'attributes' => array( 'title' => t('Compare this revision with the live revision.') ) ));
   $compare = l($rev_icon,$links['compare'],array('html' => true, 'attributes' => array( 'title' => t('List all revisions.') ) ));
Index: content_moderation/content_moderation_revisions_list.tpl.php
===================================================================
--- content_moderation/content_moderation_revisions_list.tpl.php	(revision 201)
+++ content_moderation/content_moderation_revisions_list.tpl.php	(working copy)
@@ -27,17 +27,20 @@
   $edit_state_link = '';
   $compare_live = '';
   $compare = '';
+  
+  $rev_url = _content_moderation_determine_revision_url($revisions, $rev->nid, $rev->vid);
+  $rev_compare_url = _content_moderation_determine_revision_url($revisions, $rev->nid, $rev->vid, FALSE);
+    
+  $view_link = l($view_icon,$rev_url,array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
+  $revision_link = l($rev->vid,$rev_url,array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
 
-  $view_link = l($view_icon,"node/{$rev->nid}/revisions/{$rev->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
-  $revision_link = l($rev->vid,"node/{$rev->nid}/revisions/{$rev->vid}/view",array('html' => true, 'attributes' => array( 'title' => t('View revision @rev.',array('@rev' => $rev->vid) ))));
-
   if(_content_moderation_statechange_allowed($rev->vid) !== false) {
     $edit_state_link = l($edit_state_icon,_content_moderation_change_state_link($rev->vid,$rev->nid),array('html' => true, 'attributes' => array( 'title' => t('Change state of revision @rev.',array('@rev' => $rev->vid) ))));
   }
   if(module_exists('diff')){
     $live = _content_moderation_live_revision($node->nid);
     if($live != NULL) {
-      $compare_live = l($rev_icon,"node/{$rev->nid}/revisions/view/{$live->vid}/{$rev->vid}",array('html' => true, 'attributes' => array( 'title' => t('Compare this revision with the current live revision.') ) ));
+      $compare_live = l($rev_icon, $rev_compare_url . $rev->vid,array('html' => true, 'attributes' => array( 'title' => t('Compare this revision with the current live revision.') ) ));
     }
     $compare = l($rev_icon,$links['compare'],array('html' => true, 'attributes' => array( 'title' => t('List all revisions.') ) ));
   }
@@ -54,4 +57,4 @@
 <?php
 }
 ?>
-</div>
\ No newline at end of file
+</div>
