Index: eventrepeat.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/eventrepeat/eventrepeat.module,v
retrieving revision 1.43
diff -u -r1.43 eventrepeat.module
--- eventrepeat.module	26 Sep 2006 14:50:50 -0000	1.43
+++ eventrepeat.module	10 Oct 2006 03:29:57 -0000
@@ -2101,21 +2101,21 @@
     while ($nid = db_fetch_object($result)) {
       if ($nid->nid != $node->nid) {
 
-        //load the original node, and transfer some of the edited node data to it.  to avoid big problems, we're only going
-        //to allow overwrites of a few basic things that won't screw up any table relationships.
-        $edited_node = node_load($nid->nid);
-        $edited_node->title = $node->title;
-        $edited_node->body = $node->body;
-        $edited_node->teaser = $node->teaser;
+        // create a new node object based on the current edit values
+        // get the old node information and use the nid and vid
+        $new_node = $node;
+        $old_node = node_load($nid->nid);
+        $new_node->nid = $old_node->nid;
+        $new_node->vid = $old_node->vid;
 
         //here we generate new start and end timestamps for the updated node, based on the date of the
         //node we're editing, and the start and end time of the node we updated.  this is done in case
         //the event start or end time was edited in the node we updated
-        // TODO: event times are getting adjusted here (possible cause of double shift)
-        $edited_node->event_start = $nid->event_start + $time_diff;
-        $edited_node->event_end = $edited_node->event_start + $duration;
+        $new_node->event_start = $nid->event_start + $time_diff;
+        $new_node->event_end = $old_node->event_start + $duration;
 
-        node_save($edited_node);
+        // finally, save the node
+        node_save($new_node);
       }
     }
   }
@@ -2123,8 +2123,8 @@
   //serialize the new root data to save and save it to the repeat pattern
   // TODO: IF we are doing this in eventrepeat_save_repeat
   // can I dump this here? It might be redundant?
-  unset($edited_node->eventrepeat_EXDATE);
-  $repeat_data = serialize($edited_node);
+  unset($new_node->eventrepeat_EXDATE);
+  $repeat_data = serialize($new_node);
   db_query("UPDATE {event_repeat} SET repeat_data = '%s' WHERE rid = %d", $repeat_data,
     $node->eventrepeat_rid);
   return TRUE;
