=== modified file 'includes/form.inc'
--- includes/form.inc	
+++ includes/form.inc	
@@ -323,7 +323,7 @@ function form_render(&$elements) {
     uasort($elements, "_form_sort");
   }
 
-  if (!$elements['#children']) {
+  if (!isset($elements['#children'])) {
     /* render all the children using a theme function */
     if ($elements['#theme'] && !$elements['#theme_used']) {
       $elements['#theme_used'] = TRUE;
@@ -344,13 +344,15 @@ function form_render(&$elements) {
   }
 
   /* Call the form element renderer */
-  if (!$elements['#printed']) {
+  if (!isset($elements['#printed'])) {
     $content = theme(($elements['#type']) ? $elements['#type']: 'markup', $elements);
     $elements['#printed'] = TRUE;
   }
 
   if ($content) {
-    return $elements['#prefix'] . $content . $elements['#suffix'];
+    $prefix = isset($elements['#prefix']) ? $elements['#prefix'] : '';
+    $suffix = isset($elements['#suffix']) ? $elements['#suffix'] : '';
+    return "$prefix$content$suffix";
   }
 }
 
@@ -539,7 +541,15 @@ function expand_date($element) {
         $options = drupal_map_assoc(range(1900, 2050));
         break;
     }
-    $element[$type] = array('#type' => 'select', '#value' => $element['#value'][$type], '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], '#options' => $options,  '#tree' => TRUE);
+    $parents = $element['#parents'];
+    $parents[] = $type;
+    $element[$type] = array(
+      '#type' => 'select',
+      '#value' => $element['#value'][$type],
+      '#attributes' => $element['#attributes'],
+      '#parents' => $parents,
+      '#options' => $options,
+    );
   }
 
   return $element;
