--- views_bookmark.module.orig	2007-11-12 21:01:57.000000000 +0200
+++ views_bookmark.module	2008-01-01 21:35:22.000000000 +0200
@@ -246,22 +246,10 @@
   switch ($op) {
     case 'update':
     case 'insert':
-      if (!$user->uid) {
-        return; 
-      }
-      $roles = array_merge(array(DRUPAL_AUTHENTICATED_RID), array_keys($user->roles));
-
-      $result = db_query("SELECT * FROM {views_bookmarks} vb LEFT JOIN {views_bookmark_nodetypes} vbn ON vbn.vbid = vb.vbid WHERE vbn.type = '%s' AND vb.show_on_form = 1", $node->type);
-      while ($bookmark = db_fetch_object($result)) {
-        $access = explode(',', $bookmark->roles);
-        if (!array_intersect($access, $roles)) {
-          continue;
-        }
-        if ($node->views_bookmark[$bookmark->vbid]) {
-          views_bookmark_mark('mark', $node->nid, $bookmark->vbid);
-        }
-        else {
-          views_bookmark_mark('unmark', $node->nid, $bookmark->vbid);
+      // Response to the bookmark checkboxes added to the form in views_bookmark_form_alter().
+      if (isset($node->views_bookmark)) {
+        foreach ($node->views_bookmark as $vbid => $state) {
+          views_bookmark_mark($state ? 'mark' : 'unmark', $node->nid, $vbid);
         }
       }
       break;
