Index: flag.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/flag.inc,v
retrieving revision 1.1.2.30.2.24
diff -u -r1.1.2.30.2.24 flag.inc
--- flag.inc	8 May 2010 23:48:54 -0000	1.1.2.30.2.24
+++ flag.inc	20 Jul 2010 13:47:39 -0000
@@ -1005,6 +1005,8 @@
    * Deletes a flag from the database.
    */
   function delete() {
+    // Allow modules to act before we delete.
+    module_invoke_all('flag_delete', $this);
     db_query('DELETE FROM {flags} WHERE fid = %d', $this->fid);
     db_query('DELETE FROM {flag_content} WHERE fid = %d', $this->fid);
     db_query('DELETE FROM {flag_types} WHERE fid = %d', $this->fid);
Index: flag.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/flag.module,v
retrieving revision 1.11.2.72.2.39
diff -u -r1.11.2.72.2.39 flag.module
--- flag.module	8 May 2010 23:48:54 -0000	1.11.2.72.2.39
+++ flag.module	20 Jul 2010 13:53:41 -0000
@@ -1351,7 +1351,9 @@
     $flags = array();
 
     // Database flags.
-    $result = db_query("SELECT f.*, fn.type FROM {flags} f LEFT JOIN {flag_types} fn ON fn.fid = f.fid");
+    $sql = "SELECT f.*, fn.type FROM {flags} f LEFT JOIN {flag_types} fn ON fn.fid = f.fid";
+    $sql = db_rewrite_sql($sql, 'flags', 'fid');
+    $result = db_query($sql);
     while ($row = db_fetch_object($result)) {
       if (!isset($flags[$row->name])) {
         $flags[$row->name] = flag_flag::factory_by_row($row);

