Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.303
diff -u -p -r1.303 filter.module
--- modules/filter/filter.module	30 Nov 2009 13:55:55 -0000	1.303
+++ modules/filter/filter.module	1 Dec 2009 02:21:09 -0000
@@ -556,15 +556,18 @@ function filter_list_format($format_id) 
   $filters = &drupal_static(__FUNCTION__, array());
   $filter_info = filter_get_filters();
 
+  if (!isset($filters['all'])) {
+    $result = db_query('SELECT * FROM {filter} ORDER BY weight, module, name');
+    foreach ($result as $record) {
+      $filters['all'][$record->format][$record->name] = $record;
+    }
+  }
+
   if (!isset($filters[$format_id])) {
     $format_filters = array();
-    $query = db_select('filter', 'filter')
-      ->fields('filter')
-      ->condition('format', $format_id)
-      ->orderBy('weight')
-      ->orderBy('module')
-      ->orderBy('name');
-    $result = $query->execute()->fetchAllAssoc('name');
+    // filter_list_format() is called with the non-existing $filter_id of 0 when
+    // creating a new filter. When that occurs, return an empty array.
+    $result = isset($filters['all'][$format_id]) ? $filters['all'][$format_id] : array();
     foreach ($result as $name => $filter) {
       if (isset($filter_info[$name])) {
         $filter->title = $filter_info[$name]['title'];
