diff --git a/includes/common.inc b/includes/common.inc
index 85c115af82e365b2aff485c2cdcf613fdca90ade..9c4ce49f84ca2b844f8c6b2e77bae28af9c34cf7 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -5026,6 +5026,9 @@ function drupal_render(&$elements) {
     return;
   }
 
+  // Get the children of the element, sorted by weight.
+  $children = element_children($elements, TRUE);
+
   // Initialize this element's #children, unless a #pre_render callback already
   // preset #children.
   if (!isset($elements['#children'])) {
@@ -5040,8 +5043,7 @@ function drupal_render(&$elements) {
   // This is the same process as drupal_render_children() but is inlined
   // for speed.
   if ($elements['#children'] == '') {
-    // Iterate through the children of the element, sorted by weight.
-    foreach (element_children($elements, TRUE) as $key) {
+    foreach ($children as $key) {
       $elements['#children'] .= drupal_render($elements[$key]);
     }
   }