--- original/gallery_assist.module	2010-02-16 15:15:54.000000000 +0100
+++ patched/gallery_assist.module	2010-02-16 15:16:42.000000000 +0100
@@ -1529,6 +1529,9 @@ function gallery_assist_insert(&$node) {
  * Implementation of hook_update().
  */
 function gallery_assist_update($node) {
+  if (arg(2) == 'revisions' && (arg(4) == 'revert' || arg(4) == 'delete')) {
+    return;
+  }
   //if(!gallery_assist_invalidate_cache($node->nid, 'cache_gallery_assist_data', TRUE)) {
   //  drupal_set_message('konnte cache nicht leeren für dieses Artikels', 'error');
   //}
@@ -1958,24 +1961,31 @@ function gallery_assist_save(&$node, $u 
  */
 function gallery_assist_delete(&$node) {
   global $user;
-
-  $galleries = db_result(db_query("SELECT count(*) FROM {gallery_assist} WHERE ref = %d", $node->ref));
-
-  if ($galleries == 1 and count($node->gallitems) > 0) {
-    foreach ($node->gallitems as $pid => $item) {
-      db_query("DELETE FROM {files} WHERE fid = %d", $item->fid);
-      db_query("DELETE FROM {gallery_assist_item} WHERE pid = %d", $pid);
-      db_query("DELETE FROM {gallery_assist_translated} WHERE pid = %d", $pid);
-      gallery_assist_delete_items($item);
-    }
-
-    gallery_assist_delete_directory(variable_get('gallery_assist_directory',  file_directory_path() .'/gallery_assist') .'/'. $node->uid .'/'. $node->ganame);
+  if (arg(2) == 'revisions' && (arg(4) == 'revert' || arg(4) == 'delete')) {
+    return;
   }
   else {
-      db_query("DELETE FROM {gallery_assist_translated} WHERE gref = %d and lang = '%s'", $node->gref, $node->language);
+    if (user_access('delete own gallery_assist content', $user) ||
+        user_access('delete any gallery_assist content', $user) ||
+        user_access('delete own gallery_assist_'. $node->type .' content', $user) ||
+        user_access('delete any gallery_assist_'. $node->type .' content', $user)) {
+      if ($galleries == 1 and count($node->gallitems) > 0) {
+        foreach ($node->gallitems as $pid => $item) {
+          db_query("DELETE FROM {files} WHERE fid = %d", $item->fid);
+          db_query("DELETE FROM {gallery_assist_item} WHERE pid = %d", $pid);
+          db_query("DELETE FROM {gallery_assist_translated} WHERE pid = %d", $pid);
+          gallery_assist_delete_items($item);
+        }
+    
+        gallery_assist_delete_directory(variable_get('gallery_assist_directory',  file_directory_path() .'/gallery_assist') .'/'. $node->uid .'/'. $node->ganame);
+      }
+      else {
+          db_query("DELETE FROM {gallery_assist_translated} WHERE gref = %d and lang = '%s'", $node->gref, $node->language);
+      }
+    
+      db_query("DELETE FROM {gallery_assist} WHERE nid = %d", $node->nid);
+    }
   }
-
-  db_query("DELETE FROM {gallery_assist} WHERE nid = %d", $node->nid);
 }
 
 /**
