Index: contrib/location_cck/location_cck.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/location/contrib/location_cck/location_cck.install,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 location_cck.install
--- contrib/location_cck/location_cck.install	26 Feb 2009 15:19:01 -0000	1.1.2.2
+++ contrib/location_cck/location_cck.install	3 Dec 2009 06:13:40 -0000
@@ -41,3 +41,25 @@
   drupal_load('module', 'content');
   content_notify('disable', 'location_cck');
 }
+
+/**
+ * Drupal 6 location_cck 3.x update.
+ */
+function location_cck_update_6301() {
+  $ret = array();
+
+  $schema = drupal_get_schema('location_instance');
+  $schema['description'] = 'Temp table to repair data integrity of location_instance table.';
+  unset($schema['indexes']);
+
+  db_create_table($ret, 'location_instance_tmp', $schema);
+
+  $ret[] = update_sql("INSERT INTO {location_instance_tmp} (nid, vid, genid, lid) SELECT nid, vid, l.genid, l.lid FROM {node} JOIN (SELECT substring(genid, 20) as genvid, lid, genid FROM {location_instance}) as l ON node.vid = l.genvid");
+  $ret[] = update_sql("DELETE FROM {location_instance} WHERE genid like 'cck:%'");
+  $ret[] = update_sql("INSERT INTO {location_instance} (nid, vid, genid, lid) SELECT nid, vid, genid, lid FROM {location_instance_tmp} GROUP BY nid, vid, genid, lid");
+
+
+  db_drop_table($ret, 'location_instance_tmp');
+
+  return $ret;
+}
Index: contrib/location_cck/location_cck.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/location/contrib/location_cck/location_cck.module,v
retrieving revision 1.5.2.18
diff -u -r1.5.2.18 location_cck.module
--- contrib/location_cck/location_cck.module	30 Jul 2009 20:58:43 -0000	1.5.2.18
+++ contrib/location_cck/location_cck.module	3 Dec 2009 06:13:41 -0000
@@ -133,9 +133,14 @@
 
     case 'insert':
     case 'update':
-      // Store instances of locations by field name and vid.
-      $genid = 'cck:'. $field['field_name'] .':'. $node->vid;
-      location_save_locations($items, array('genid' => $genid));
+      // Store instances of locations nid, vid, uid and genid as cck:field name:vid.
+      $criteria = array(
+        'genid' => 'cck:'. $field['field_name'] .':'. $node->vid,
+        'vid' => $node->vid,
+        'nid' => $node->nid,
+      );
+
+      location_save_locations($items, $criteria);
       // CCK automatically picks up the new lids and stores them in its own tables.
       break;
 
