=== modified file 'includes/common.inc'
--- includes/common.inc	2006-12-07 17:02:25 +0000
+++ includes/common.inc	2006-12-11 06:44:56 +0000
@@ -1999,8 +1999,10 @@ function drupal_render(&$elements) {
     if (isset($elements['#theme']) && empty($elements['#theme_used'])) {
       $elements['#theme_used'] = TRUE;
 
-      $previous_value = isset($elements['#value']) ? $elements['#value'] : NULL;
-      $previous_type = $elements['#type'];
+      $previous = array();
+      foreach (array('#value', '#type', '#prefix', '#suffix') as $key) {
+        $previous[$key] = isset($elements[$key]) ? $elements[$key] : NULL;
+      }
       // If we rendered a single element, then we will skip the renderer.
       if (empty($children)) {
         $elements['#printed'] = TRUE;
@@ -2010,11 +2012,12 @@ function drupal_render(&$elements) {
       }
       $elements['#type'] = 'markup';
 
+      unset($elements['#prefix'], $elements['#suffix']);
       $content = theme($elements['#theme'], $elements);
 
-      $elements['#value'] = $previous_value;
-      $elements['#type'] = $previous_type;
-      unset($elements['#prefix'], $elements['#suffix']);
+      foreach (array('#value', '#type', '#prefix', '#suffix') as $key) {
+        $elements[$key] = isset($previous[$key]) ? $previous[$key] : NULL;
+      }
     }
     /* render each of the children using drupal_render and concatenate them */
     if (!isset($content) || $content === '') {

