Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.203
diff -u -p -r1.203 module.inc
--- includes/module.inc	19 Nov 2010 20:35:31 -0000	1.203
+++ includes/module.inc	19 Nov 2010 21:38:29 -0000
@@ -636,9 +636,12 @@ function module_implements($hook, $sort 
     $implementations[$hook] = array();
     $list = module_list(FALSE, FALSE, $sort);
     foreach ($list as $module) {
-      $include_file = isset($hook_info[$hook]['group']) && module_load_include('inc', $module, $module . '.' . $hook_info[$hook]['group']);
+      $file = FALSE;
+      if (isset($hook_info[$hook]['group'])) {
+        $file = module_load_include('inc', $module, $module . '.' . $hook_info[$hook]['group']);
+      }
       if (module_hook($module, $hook)) {
-        $implementations[$hook][$module] = $include_file ? $hook_info[$hook]['group'] : FALSE;
+        $implementations[$hook][$module] = $file;
       }
     }
     // Allow modules to change the weight of specific implementations but avoid
@@ -648,11 +651,11 @@ function module_implements($hook, $sort 
     }
   }
   else {
-    foreach ($implementations[$hook] as $module => $group) {
+    foreach ($implementations[$hook] as $module => $file) {
       // If this hook implementation is stored in a lazy-loaded file, so include
       // that file first.
-      if ($group) {
-        module_load_include('inc', $module, "$module.$group");
+      if ($file && is_file($file)) {
+        require_once $file;
       }
       // It is possible that a module removed a hook implementation without the
       // implementations cache being rebuilt yet, so we check module_hook() on
@@ -953,4 +956,3 @@ function drupal_alter($type, &$data, &$c
     $function($data, $context1, $context2);
   }
 }
-
Index: modules/simpletest/tests/module.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/module.test,v
retrieving revision 1.23
diff -u -p -r1.23 module.test
--- modules/simpletest/tests/module.test	5 Aug 2010 23:53:38 -0000	1.23
+++ modules/simpletest/tests/module.test	19 Nov 2010 21:35:51 -0000
@@ -104,11 +104,11 @@ class ModuleUnitTest extends DrupalWebTe
     // For that activate the module_test which provides the file to load.
     module_enable(array('module_test'));
 
-    module_load_include('inc', 'module_test', 'module_test.file');
+    $include_file = module_load_include('inc', 'module_test', 'module_test.file');
     $modules = module_implements('test_hook');
     $static = drupal_static('module_implements');
     $this->assertTrue(in_array('module_test', $modules), 'Hook found.');
-    $this->assertEqual($static['test_hook']['module_test'], 'file', 'Include file detected.');
+    $this->assertEqual($static['test_hook']['module_test'], $include_file, 'Include file detected.');
   }
 
   /**
