Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.871
diff -u -p -r1.871 common.inc
--- includes/common.inc	17 Mar 2009 22:35:07 -0000	1.871
+++ includes/common.inc	24 Mar 2009 23:47:45 -0000
@@ -3213,7 +3213,9 @@ function drupal_alter($type, &$data) {
 
   foreach (module_implements($type . '_alter') as $module) {
     $function = $module . '_' . $type . '_alter';
-    call_user_func_array($function, $args);
+    if (function_exists($function) || drupal_function_exists($function)) {
+        call_user_func_array($function, $args);
+    }
   }
 }
 
Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.139
diff -u -p -r1.139 module.inc
--- includes/module.inc	22 Feb 2009 17:55:29 -0000	1.139
+++ includes/module.inc	24 Mar 2009 23:47:45 -0000
@@ -419,12 +419,6 @@ function module_implements($hook, $sort 
     if (!isset($implementations[$hook])) {
       $implementations[$hook] = db_query("SELECT module FROM {registry} WHERE type = 'function' AND suffix = :hook ORDER BY weight, module", array(':hook' => $hook))->fetchCol();
     }
-    foreach ($implementations[$hook] as $module) {
-      $function = $module . '_' . $hook;
-      if (!function_exists($function)) {
-        drupal_function_exists($function);
-      }
-    }
     $loaded[$hook] = TRUE;
   }
 
@@ -510,7 +504,7 @@ function module_invoke_all() {
   $return = array();
   foreach (module_implements($hook) as $module) {
     $function = $module . '_' . $hook;
-    if (drupal_function_exists($function)) {
+    if (function_exists($function) || drupal_function_exists($function)) {
       $result = call_user_func_array($function, $args);
       if (isset($result) && is_array($result)) {
         $return = array_merge_recursive($return, $result);
