Index: includes/actions.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/actions.inc,v
retrieving revision 1.26
diff -u -p -r1.26 actions.inc
--- includes/actions.inc	18 Mar 2009 09:50:46 -0000	1.26
+++ includes/actions.inc	24 May 2009 20:18:06 -0000
@@ -81,12 +81,16 @@ function actions_do($action_ids, $object
       // Configurable actions need parameters.
       if (is_numeric($action_id)) {
         $function = $params['callback'];
-        $context = array_merge($context, $params);
-        $result[$action_id] = $function($object, $context, $a1, $a2);
+        if (drupal_function_exists($function)) {
+          $context = array_merge($context, $params);
+          $result[$action_id] = $function($object, $context, $a1, $a2);
+        }
       }
       // Singleton action; $action_id is the function name.
       else {
-        $result[$action_id] = $action_id($object, $context, $a1, $a2);
+        if (drupal_function_exists($action_id)) {
+          $result[$action_id] = $action_id($object, $context, $a1, $a2);
+        }
       }
     }
   }
@@ -96,12 +100,16 @@ function actions_do($action_ids, $object
     if (is_numeric($action_ids)) {
       $action = db_query("SELECT callback, parameters FROM {actions} WHERE aid = :aid", array(':aid' => $action_ids))->fetchObject();
       $function = $action->callback;
-      $context = array_merge($context, unserialize($action->parameters));
-      $result[$action_ids] = $function($object, $context, $a1, $a2);
+      if (drupal_function_exists($function)) {
+        $context = array_merge($context, unserialize($action->parameters));
+        $result[$action_ids] = $function($object, $context, $a1, $a2);
+      }
     }
     // Singleton action; $action_ids is the function name.
     else {
-      $result[$action_ids] = $action_ids($object, $context, $a1, $a2);
+      if (drupal_function_exists($action_ids)) {
+        $result[$action_ids] = $action_ids($object, $context, $a1, $a2);
+      }
     }
   }
   $stack--;
Index: modules/field/field.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.module,v
retrieving revision 1.8
diff -u -p -r1.8 field.module
--- modules/field/field.module	24 May 2009 17:39:32 -0000	1.8
+++ modules/field/field.module	24 May 2009 20:45:43 -0000
@@ -250,10 +250,12 @@ function field_associate_fields($module)
 function field_set_empty($field, $items) {
   // Filter out empty values.
   $filtered = array();
-  $function = $field['module'] . '_field_is_empty';
-  foreach ((array) $items as $delta => $item) {
-    if (!$function($item, $field)) {
-      $filtered[] = $item;
+  if (module_hook($field['module'], 'field_is_empty')) {
+    $function = $field['module'] . '_field_is_empty';
+    foreach ((array) $items as $delta => $item) {
+      if (!$function($item, $field)) {
+        $filtered[] = $item;
+      }
     }
   }
   return $filtered;
@@ -424,8 +426,8 @@ function field_format($obj_type, $object
 
         // hook_field('sanitize') expects an array of items, so we build one.
         $items = array($item);
-        $function = $field['module'] . '_field_sanitize';
-        if (function_exists($function)) {
+        if (module_hook($field['module'], 'field_sanitize')) {
+          $function = $field['module'] . '_field_sanitize';
           $function($obj_type, $object, $field, $instance, $items);
         }
 
@@ -434,8 +436,8 @@ function field_format($obj_type, $object
       else {
         // Multiple values formatter.
         $items = $item;
-        $function = $field['module'] . '_field_sanitize';
-        if (function_exists($function)) {
+        if (module_hook($field['module'], 'field_sanitize')) {
+          $function = $field['module'] . '_field_sanitize';
           $function($obj_type, $object, $field, $instance, $items);
         }
 
Index: modules/field/modules/options/options.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.module,v
retrieving revision 1.5
diff -u -p -r1.5 options.module
--- modules/field/modules/options/options.module	12 Apr 2009 02:18:51 -0000	1.5
+++ modules/field/modules/options/options.module	24 May 2009 20:46:56 -0000
@@ -375,7 +375,7 @@ function options_transpose_array_rows_co
  */
 function options_options($field, $instance) {
   $function = $field['module'] . '_allowed_values';
-  $options = function_exists($function) ? $function($field) : (array) list_allowed_values($field);
+  $options = module_hook($field['module'], 'allowed_values') ? $function($field) : (array) list_allowed_values($field);
   // Add an empty choice for :
   // - non required radios
   // - non required selects
Index: modules/search/search.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.pages.inc,v
retrieving revision 1.8
diff -u -p -r1.8 search.pages.inc
--- modules/search/search.pages.inc	12 May 2009 08:37:45 -0000	1.8
+++ modules/search/search.pages.inc	24 May 2009 20:20:04 -0000
@@ -35,6 +35,7 @@ function search_view($type = 'node') {
         $results = theme('search_results_listing', t('Search results'), $results);
       }
       else {
+        drupal_function_exists('search_help');
         $results = theme('search_results_listing', t('Your search yielded no results'), search_help('search#noresults', drupal_help_arg()));
       }
     }
Index: modules/search/search.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.test,v
retrieving revision 1.20
diff -u -p -r1.20 search.test
--- modules/search/search.test	24 May 2009 17:39:33 -0000	1.20
+++ modules/search/search.test	24 May 2009 20:38:45 -0000
@@ -246,7 +246,7 @@ class SearchAdvancedSearchForm extends D
     $this->node = $this->drupalCreateNode();
 
     // First update the index. This does the initial processing.
-    node_update_index();
+    module_invoke('node', 'update_index');
 
     // Then, run the shutdown function. Testing is a unique case where indexing
     // and searching has to happen in the same request, so running the shutdown
Index: modules/update/update.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.module,v
retrieving revision 1.34
diff -u -p -r1.34 update.module
--- modules/update/update.module	24 May 2009 17:39:35 -0000	1.34
+++ modules/update/update.module	24 May 2009 20:39:46 -0000
@@ -66,6 +66,7 @@ function update_help($path, $arg) {
     case 'admin/build/themes':
     case 'admin/build/modules':
       include_once DRUPAL_ROOT . '/includes/install.inc';
+      drupal_function_exists('update_requirements');
       $status = update_requirements('runtime');
       foreach (array('core', 'contrib') as $report_type) {
         $type = 'update_' . $report_type;
@@ -94,9 +95,9 @@ function update_help($path, $arg) {
     default:
       // Otherwise, if we're on *any* admin page and there's a security
       // update missing, print an error message about it.
-      if (arg(0) == 'admin' && strpos($path, '#') === FALSE
-          && user_access('administer site configuration')) {
+      if (arg(0) == 'admin' && strpos($path, '#') === FALSE && user_access('administer site configuration')) {
         include_once DRUPAL_ROOT . '/includes/install.inc';
+        drupal_function_exists('update_requirements');
         $status = update_requirements('runtime');
         foreach (array('core', 'contrib') as $report_type) {
           $type = 'update_' . $report_type;
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.991
diff -u -p -r1.991 user.module
--- modules/user/user.module	24 May 2009 17:39:35 -0000	1.991
+++ modules/user/user.module	24 May 2009 20:25:49 -0000
@@ -930,6 +930,7 @@ function user_user_view(&$edit, &$accoun
 function user_user_form(&$edit, &$account, $category = NULL) {
   if ($category == 'account') {
     $form_state = array();
+    drupal_function_exists('user_edit_form');
     return user_edit_form($form_state, (isset($account->uid) ? $account->uid : FALSE), $edit);
   }
 }
