diff --git a/core/includes/form.inc b/core/includes/form.inc
index b5a13c5..0804b0a 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -2662,6 +2662,10 @@ function form_select_options($element, $choices = NULL) {
   if (!isset($choices)) {
     $choices = $element['#options'];
   }
+  // If there are no choices, <option> elements cannot be created.
+  if (!(count($choices) > 0)) {
+    return '';
+  }
   // array_key_exists() accommodates the rare event where $element['#value'] is NULL.
   // isset() fails in this situation.
   $value_valid = isset($element['#value']) || array_key_exists('#value', $element);
diff --git a/core/modules/system/tests/form.test b/core/modules/system/tests/form.test
index b64fdd7..162620c 100644
--- a/core/modules/system/tests/form.test
+++ b/core/modules/system/tests/form.test
@@ -620,6 +620,14 @@ class FormElementTestCase extends DrupalWebTestCase {
       )));
     }
   }
+
+  /**
+   * Verifies that an no empty select elements exist
+   */
+  function testEmptySelect() {
+    $this->drupalGet('form-test/empty-select');
+    $this->assertFieldByXPath("//option/select[1]", NULL, t('Empty option element found.'));
+  }
 }
 
 /**
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index c727c51..5139984 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -255,6 +255,13 @@ function form_test_menu() {
     'access callback' => TRUE,
   );
 
+  $items['form-test/empty-select'] = array(
+    'title' => 'Empty Select Element',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('form_test_empty_select'),
+    'access callback' => TRUE,
+  );
+
   return $items;
 }
 
@@ -2035,3 +2042,16 @@ function form_test_required_attribute($form, &$form_state) {
 
   return $form;
 }
+
+/**
+ * Builds a form to test select elements when #options is not an array.
+ */
+function form_test_empty_select($form, &$form_state) {
+  $form['select'] = array(
+    '#type' => 'select',
+    '#title' => t('Select'),
+    '#multiple' => FALSE,
+    '#options' => NULL,
+  );
+  return $form;
+}
