? 289369.patch
Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.115
diff -u -p -r1.115 module.inc
--- includes/module.inc	27 Dec 2007 12:31:05 -0000	1.115
+++ includes/module.inc	31 Jul 2008 10:21:16 -0000
@@ -111,6 +111,8 @@ function module_rebuild_cache() {
     'php' => DRUPAL_MINIMUM_PHP,
   );
 
+  db_query("DELETE FROM {system} WHERE type = 'module'");
+
   foreach ($files as $filename => $file) {
     // Look for the info file.
     $file->info = drupal_parse_info_file(dirname($file->filename) .'/'. $file->name .'.info');
@@ -136,16 +138,16 @@ function module_rebuild_cache() {
       }
     }
 
-    // Update the contents of the system table:
-    if (isset($file->status) || (isset($file->old_filename) && $file->old_filename != $file->filename)) {
-      db_query("UPDATE {system} SET info = '%s', name = '%s', filename = '%s', bootstrap = %d WHERE filename = '%s'", serialize($files[$filename]->info), $file->name, $file->filename, $bootstrap, $file->old_filename);
-    }
-    else {
+    if (!isset($file->status)) {
       // This is a new module.
-      $files[$filename]->status = 0;
-      $files[$filename]->throttle = 0;
-      db_query("INSERT INTO {system} (name, info, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $file->name, serialize($files[$filename]->info), 'module', $file->filename, 0, 0, $bootstrap);
+      $file->status = 0;
+      $file->throttle = 0;
+      $file->schema_version = -1;
+      $file->weight = 0;
     }
+
+    // Rebuild the contents of the system table.
+    db_query("INSERT INTO {system} (name, info, type, filename, status, throttle, bootstrap, schema_version, weight) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d, %d, %d)", $file->name, serialize($files[$filename]->info), 'module', $file->filename, $file->status, $file->throttle, $bootstrap, $file->schema_version, $file->weight);
   }
   $files = _module_build_dependencies($files);
   return $files;
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.585.2.15
diff -u -p -r1.585.2.15 system.module
--- modules/system/system.module	14 Jul 2008 14:04:31 -0000	1.585.2.15
+++ modules/system/system.module	31 Jul 2008 10:21:31 -0000
@@ -757,7 +757,7 @@ function system_check_directory($form_el
  */
 function system_get_files_database(&$files, $type) {
   // Extract current files from database.
-  $result = db_query("SELECT filename, name, type, status, throttle, schema_version FROM {system} WHERE type = '%s'", $type);
+  $result = db_query("SELECT filename, name, type, status, throttle, schema_version, weight FROM {system} WHERE type = '%s'", $type);
   while ($file = db_fetch_object($result)) {
     if (isset($files[$file->name]) && is_object($files[$file->name])) {
       $file->old_filename = $file->filename;
