Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.163
diff -u -p -r1.163 module.inc
--- includes/module.inc	30 Oct 2009 21:54:45 -0000	1.163
+++ includes/module.inc	31 Oct 2009 21:34:43 -0000
@@ -485,13 +485,18 @@ function module_implements_write_cache()
  * @return
  *   The return value of the hook implementation.
  */
-function module_invoke() {
-  $args = func_get_args();
-  $module = $args[0];
-  $hook = $args[1];
-  unset($args[0], $args[1]);
+function module_invoke($module, $hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = NULL, $a5 = NULL, $a6 = NULL, $a7 = NULL) {
   if (module_hook($module, $hook)) {
-    return call_user_func_array($module . '_' . $hook, $args);
+    $function = $module . '_' . $hook;
+    switch (func_num_args() - 2) {
+      case 1: return $function($a1);
+      case 2: return $function($a1, $a2);
+      case 3: return $function($a1, $a2, $a3);
+      case 4: return $function($a1, $a2, $a3, $a4);
+      case 5: return $function($a1, $a2, $a3, $a4, $a5);
+      case 6: return $function($a1, $a2, $a3, $a4, $a5, $a6);
+      case 7: return $function($a1, $a2, $a3, $a4, $a5, $a6, $a7);
+    }
   }
 }
 /**
@@ -505,15 +510,21 @@ function module_invoke() {
  *   An array of return values of the hook implementations. If modules return
  *   arrays from their implementations, those are merged into one array.
  */
-function module_invoke_all() {
-  $args = func_get_args();
-  $hook = $args[0];
-  unset($args[0]);
+function module_invoke_all($hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = NULL, $a5 = NULL, $a6 = NULL, $a7 = NULL) {
   $return = array();
   foreach (module_implements($hook) as $module) {
     $function = $module . '_' . $hook;
     if (function_exists($function)) {
-      $result = call_user_func_array($function, $args);
+      switch (func_num_args() - 1) {
+        case 0: $result = $function(); break;
+        case 1: $result = $function($a1); break;
+        case 2: $result = $function($a1, $a2); break;
+        case 3: $result = $function($a1, $a2, $a3); break;
+        case 4: $result = $function($a1, $a2, $a3, $a4); break;
+        case 5: $result = $function($a1, $a2, $a3, $a4, $a5); break;
+        case 6: $result = $function($a1, $a2, $a3, $a4, $a5, $a6); break;
+        case 7: $result = $function($a1, $a2, $a3, $a4, $a5, $a6, $a7); break;
+      }
       if (isset($result) && is_array($result)) {
         $return = array_merge_recursive($return, $result);
       }
