diff --git a/includes/form.inc b/includes/form.inc
index a74558b967369439cb54308025730ad176b9c5d6..04af91e77935bb66bedf71ad1055654d7039a9f7 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -504,7 +504,12 @@ function form_render(&$elements) {
 
       $previous_value = $elements['#value'];
       $previous_type = $elements['#type'];
-      $elements['#value'] = '';
+      if (empty($children)) {
+        $elements['#printed'] = TRUE;
+      }
+      else {
+        $elements['#value'] = '';
+      }
       $elements['#type'] = 'markup';
 
       $content = theme($elements['#theme'], $elements);
@@ -512,9 +517,6 @@ function form_render(&$elements) {
       $elements['#value'] = $previous_value;
       $elements['#type'] = $previous_type;
       // if we rendered a single element, then we will skip the renderer
-      if (empty($children)) {
-        $elements['#printed'] = TRUE;
-      }
       unset($elements['#prefix'], $elements['#suffix']);
     }
     /* render each of the children using form_render and concatenate them */