--- original/gallery_assist.module	2010-02-16 15:20:15.000000000 +0100
+++ patched/gallery_assist.module	2010-02-16 15:22:09.000000000 +0100
@@ -1374,6 +1374,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;
+  }
   // Get data from principal gallery (the origen node from the translation)
   // in_profile-, comments- and show_title-changes affecting the gallery and its dependencies
   $q = db_query("SELECT gid, gref, lang FROM {gallery_assist} WHERE ref = %d", $node->ref);
@@ -1771,24 +1774,31 @@ function gallery_assist_save(&$node) {
  */
 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);
 }
 
 /**
