Index: taxonomy_access.module
===================================================================
--- taxonomy_access.module	(revision 1)
+++ taxonomy_access.module	(revision 89)
@@ -219,7 +219,7 @@
 
     case 'update':
       // restore terms that the user shouldn't have access to delete
-      taxonomy_access_restore_terms($node->nid, $node->tac_protected_terms);
+      taxonomy_access_restore_terms($node->nid, $node->vid, $node->tac_protected_terms);
       break;
   }
 }
@@ -379,15 +379,15 @@
  *
  * Called by taxonomy_access_nodeapi()
  */
-function taxonomy_access_restore_terms($nid, $protected_terms) {
+function taxonomy_access_restore_terms($nid, $vid, $protected_terms) {
   if (isset($protected_terms)) {
     $terms = $protected_terms;
     if (count($terms)) {
-      db_query('DELETE FROM {term_node} WHERE nid = %d AND tid IN ('. implode(',', $terms) .')', $nid);
+      db_query('DELETE FROM {term_node} WHERE nid = %d AND vid = %d AND tid IN ('. implode(',', $terms) .')', $nid, $vid);
       foreach ($terms as $tid) {
-        $replace_terms[] = '('. $nid .','. $tid .')';
+        $replace_terms[] = '('. $nid .','. $vid .','. $tid .')';
       }
-      db_query('INSERT INTO {term_node} (nid,tid) VALUES '. implode(',', $replace_terms));
+      db_query('INSERT INTO {term_node} (nid,vid,tid) VALUES '. implode(',', $replace_terms));
     }
   }
 }
