Index: uuid.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uuid/uuid.module,v
retrieving revision 1.1.2.14
diff -u -p -r1.1.2.14 uuid.module
--- uuid.module	21 Sep 2010 14:40:40 -0000	1.1.2.14
+++ uuid.module	23 Sep 2010 18:17:35 -0000
@@ -33,12 +33,12 @@ function uuid_nodeapi(&$node, $op, $teas
 
   switch ($op) {
     case 'load':
-      $revision_uuid = db_result(db_query('SELECT uuid FROM {uuid_node_revisions} WHERE vid = %d', $node->vid));
-      return array(
-        'uuid' => db_result(db_query('SELECT uuid FROM {uuid_node} WHERE nid = %d', $node->nid)),
-        'revision_uuid' => $revision_uuid,
-        'loaded_revision_uuid' => $revision_uuid,
-      );
+      if ($arr = db_fetch_array(db_query('SELECT un.uuid AS uuid, unr.uuid AS revision_uuid FROM {uuid_node} un LEFT JOIN {uuid_node_revisions} unr ON unr.vid=%d WHERE un.nid=%d', $node->vid, $node->nid))) {
+        return $arr;
+      }
+      else {
+        return array('uuid' => FALSE, 'revision_uuid' => FALSE, 'loaded_revision_uuid' => FALSE);
+      }
     case 'insert':
       // Handle the case where automatic UUID generation is turned OFF but a
       // node is created, node_save(), intentionally with the $node->uuid
@@ -60,11 +60,14 @@ function uuid_nodeapi(&$node, $op, $teas
       break;
     case 'update':
       if (isset($node->revision)) {
-        if (isset($node->revision_uuid) && uuid_is_valid($node->revision_uuid) && $node->revision_uuid != $node->loaded_revision_uuid) {
-          db_query("INSERT INTO {uuid_node_revisions} (vid, uuid) VALUES (%d, '%s')", $node->vid, $node->revision_uuid);
-        }
-        else {
-          db_query("INSERT INTO {uuid_node_revisions} (vid, uuid) VALUES (%d, '%s')", $node->vid, uuid_uuid());
+        if (in_array($node->type, $automatic_types)) {
+          $exists = db_result(db_query('SELECT 1 FROM {uuid_node_revisions} WHERE vid = %d', $node->vid));
+          if (!$exists) {
+            if (!isset($node->revision_uuid) || !uuid_is_valid($node->revision_uuid)) {
+              $node->revision_uuid = uuid_uuid();
+            }
+            db_query("INSERT INTO {uuid_node_revisions} (vid, uuid) VALUES (%d, '%s')", $node->vid, $node->revision_uuid);
+          }
         }
       }
       break;
