Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.967
diff -u -p -r1.967 node.module
--- modules/node/node.module	26 May 2008 17:12:55 -0000	1.967
+++ modules/node/node.module	6 Jul 2008 20:56:27 -0000
@@ -937,14 +937,16 @@ function node_save(&$node) {
 
   // Generate the node table query and the node_revisions table query.
   if ($node->is_new) {
-    drupal_write_record('node', $node);
     _node_save_revision($node, $user->uid);
+    drupal_write_record('node', $node);
+    db_query('UPDATE {node_revisions} SET nid = %d WHERE vid = %d', $node->nid, $node->vid);
     $op = 'insert';
   }
   else {
     drupal_write_record('node', $node, 'nid');
     if (!empty($node->revision)) {
       _node_save_revision($node, $user->uid);
+      db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
     }
     else {
       _node_save_revision($node, $user->uid, 'vid');
@@ -952,9 +954,6 @@ function node_save(&$node) {
     }
     $op = 'update';
   }
-  if ($update_node) {
-    db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
-  }
 
   // Call the node specific callback (if any). This can be
   // node_invoke($node, 'insert') or
