--- 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: