=== modified file 'includes/form.inc'
--- includes/form.inc	2010-01-02 23:30:53 +0000
+++ includes/form.inc	2010-01-03 10:38:44 +0000
@@ -1269,6 +1269,13 @@ function form_builder($form_id, $element
     $array_parents[] = $key;
     $element[$key]['#array_parents'] = $array_parents;
 
+    if (!empty($complete_form['#inheritance_callback']))
+      foreach ($complete_form['#inheritance_callback'] as $callback) {
+        $function = $complete_form['#inheritance_callback'];
+        $function($form, $key);
+      }
+    }
+
     // Assign a decimal placeholder weight to preserve original array order.
     if (!isset($element[$key]['#weight'])) {
       $element[$key]['#weight'] = $count/1000;

=== modified file 'modules/system/system.module'
--- modules/system/system.module	2009-12-15 08:45:32 +0000
+++ modules/system/system.module	2010-01-03 10:40:45 +0000
@@ -2457,22 +2457,10 @@ function system_default_region($theme) {
   return isset($regions[0]) ? $regions[0] : '';
 }
 
-function _system_settings_form_automatic_defaults($form) {
-  // Get an array of all non-property keys
-  $keys = element_children($form);
-
-  foreach ($keys as $key) {
-    // If the property (key) '#default_value' exists, replace it.
-    if (array_key_exists('#default_value', $form[$key])) {
-      $form[$key]['#default_value'] = variable_get($key, $form[$key]['#default_value']);
-    }
-    else {
-      // Recurse through child elements
-      $form[$key] = _system_settings_form_automatic_defaults($form[$key]);
-    }
+function _system_settings_set_defaults($form, $key) {
+  if (array_key_exists('#default_value', $form[$key])) {
+    $form[$key]['#default_value'] = variable_get($key, $form[$key]['#default_value']);
   }
-
-  return $form;
 }
 
 /**
@@ -2492,7 +2480,7 @@ function system_settings_form($form, $au
   $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') );
 
   if ($automatic_defaults) {
-    $form = _system_settings_form_automatic_defaults($form);
+    $form['#inheritance_callback'][] = '_system_settings_set_defaults';
   }
 
   if (!empty($_POST) && form_get_errors()) {

