--- node.module.orig	2009-11-14 05:07:54.000000000 +0100
+++ node.module	2009-11-17 22:50:08.000000000 +0100
@@ -862,40 +862,35 @@ function node_save(&$node) {
   node_invoke_nodeapi($node, 'presave');
   global $user;
 
-  $node->is_new = FALSE;
-
-  // Apply filters to some default node fields:
-  if (empty($node->nid)) {
-    // Insert a new node.
-    $node->is_new = TRUE;
-
-    // When inserting a node, $node->log must be set because
-    // {node_revisions}.log does not (and cannot) have a default
-    // value.  If the user does not have permission to create
-    // revisions, however, the form will not contain an element for
-    // log so $node->log will be unset at this point.
-    if (!isset($node->log)) {
-      $node->log = '';
-    }
-
-    // For the same reasons, make sure we have $node->teaser and
-    // $node->body.  We should consider making these fields nullable
-    // in a future version since node types are not required to use them.
-    if (!isset($node->teaser)) {
+  // Insert a new node.
+  $node->is_new = empty($node->nid);
+
+  // When inserting a node, $node->log must be set because
+  // {node_revisions}.log does not (and cannot) have a default
+  // value.  If the user does not have permission to create
+  // revisions, however, the form will not contain an element for
+  // log so $node->log will be unset at this point.
+  if ($node->is_new || !empty($node->revision)) { 
+      if (!isset($node->log)) {
+        $node->log = '';
+      }
+  }
+  elseif (empty($node->log)) {
+      // When updating a node, however, avoid clobbering an existing
+      // log entry with an empty one.
+      unset($node->log);
+  }
+  // For the same reasons, make sure we have $node->teaser and
+  // $node->body.  We should consider making these fields nullable
+  // in a future version since node types are not required to use them.
+  if (!isset($node->teaser)) {
       $node->teaser = '';
-    }
-    if (!isset($node->body)) {
-      $node->body = '';
-    }
   }
-  elseif (!empty($node->revision)) {
-    $node->old_vid = $node->vid;
+  if (!isset($node->body)) {
+      $node->body = '';
   }
-  else {
-    // When updating a node, avoid clobberring an existing log entry with an empty one.
-    if (empty($node->log)) {
-      unset($node->log);
-    }
+  // Save the old revision if needed.
+  if (!$node->is_new && !empty($node->revision) && $node->vid) {
+      $node->old_vid = $node->vid;
   }
 
   // Set some required fields:
