Index: modules/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book.module,v
retrieving revision 1.333
diff -u -F^f -r1.333 book.module
--- modules/book.module	24 Nov 2005 19:24:38 -0000	1.333
+++ modules/book.module	26 Nov 2005 22:14:28 -0000
@@ -469,6 +469,9 @@ function book_nodeapi(&$node, $op, $teas
         }
       }
       break;
+    case 'delete revision':
+      db_query('DELETE FROM {book} WHERE vid = %d', $node->vid);
+      break;
   }
 }
 
Index: modules/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum.module,v
retrieving revision 1.285
diff -u -F^f -r1.285 forum.module
--- modules/forum.module	23 Nov 2005 16:18:28 -0000	1.285
+++ modules/forum.module	26 Nov 2005 22:14:28 -0000
@@ -72,6 +72,18 @@ function forum_perm() {
 }
 
 /**
+ * Implementation of hook_nodeapi().
+ */
+function forum_nodeapi(&$node, $op, $teaser, $page) {
+  switch ($op) {
+    case 'delete revision':
+      db_query('DELETE FROM {forum} WHERE vid = %d', $node->vid);
+      break;
+  }
+}
+
+
+/**
  * Administration page which allows maintaining forums
  */
 function forum_admin() {
Index: modules/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.555
diff -u -F^f -r1.555 node.module
--- modules/node.module	25 Nov 2005 10:11:59 -0000	1.555
+++ modules/node.module	26 Nov 2005 22:14:29 -0000
@@ -1327,9 +1327,9 @@ function node_revision_rollback($nid, $r
 function node_revision_delete($nid, $revision) {
 
   if (user_access('administer nodes')) {
-    $count_revisions = db_result(db_query('SELECT COUNT(vid) FROM {node_revisions} WHERE nid = %d', $nid));
-    // Don't delete the last revision of the node or the current revision
-    if ($count_revisions > 1) {
+    $current_revision = db_result(db_query('SELECT vid FROM {node} WHERE nid = %d', $nid));
+    // Don't delete the current revision
+    if ($revision != $current_revision) {
       $node = node_load($nid, $revision);
 
       db_query("DELETE FROM {node_revisions} WHERE nid = %d AND vid = %d", $nid, $revision);
