--- feedapi/feedapi_node/feedapi_node.module	2008-10-02 21:43:20.000000000 +-0200
+++ feedapi/feedapi_node/feedapi_node.module	2009-10-01 14:39:29.000000000 +-0200
@@ -312,16 +312,16 @@
 /**
  * Update a node which already assigned to a feed item
  */
 function _feedapi_node_update($feed_item, $feed_nid, $settings = array()) {
   // Determine which node is assigned to this item
   if ($feed_item->options->guid) {
-    $node = db_fetch_object(db_query("SELECT nid FROM {feedapi_node_item} WHERE guid = '%s'", $feed_item->options->guid));
+    $node = db_fetch_object(db_query("SELECT fni.nid FROM {feedapi_node_item} fni JOIN {feedapi_node_item_feed} ff ON ff.feed_item_nid = fni.nid WHERE fni.guid = '%s' AND ff.feed_nid = %d", $feed_item->options->guid, $feed_nid));
   }
   else {
-    $node = db_fetch_object(db_query("SELECT nid FROM {feedapi_node_item} WHERE url = '%s'", $feed_item->options->original_url));
+    $node = db_fetch_object(db_query("SELECT fni.nid FROM {feedapi_node_item} fni JOIN {feedapi_node_item_feed} ff ON ff.feed_item_nid = fni.nid WHERE fni.url = '%s' AND ff.feed_nid = %d", $feed_item->options->original_url, $feed_nid));
   }
   $feed_item->nid = $node->nid;
   _feedapi_node_save($feed_item, $feed_nid, $settings);
   return $feed_item;
 }
 
@@ -384,18 +384,20 @@
  * @return
  *  TRUE if the item is new, FALSE if the item is a duplicated one
  */
 function _feedapi_node_unique($feed_item, $feed_nid, $settings) {
   // Feed item is duplicate, if URL or GUID are duplicate or if they are both missing.
   if (isset($feed_item->options->original_url)) {
+    // Important: _feedapi_node_update() must use the same SELECT to determine the nid of the duplicate. 
     $count = db_result(db_query("SELECT fni.nid FROM {feedapi_node_item} fni JOIN {feedapi_node_item_feed} ff ON ff.feed_item_nid = fni.nid WHERE fni.url = '%s' AND ff.feed_nid = %d", $feed_item->options->original_url, $feed_nid));
     if ($count) {
       return FALSE;
     }
   }
   if (isset($feed_item->options->guid)) {
+    // Important: _feedapi_node_update() must use the exact same SELECT to determine the nid of the duplicate.
     $count = db_result(db_query("SELECT fni.nid FROM {feedapi_node_item} fni JOIN {feedapi_node_item_feed} ff ON ff.feed_item_nid = fni.nid WHERE fni.guid = '%s' AND ff.feed_nid = %d", $feed_item->options->guid, $feed_nid));
     if ($count) {
       return FALSE;
     }
   }
   // If cross feed de-dupeing is enabled, check now whether there is a duplicate item on other feeds.
