diff --git a/includes/form.inc b/includes/form.inc
index 35333e5fec3cd3c185a1087bdc134296896ad90c..3102701123451322fa888120e2237b81fa8756ce 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -344,11 +344,16 @@ function form_builder($form_id, $form) {
             $form['#value'] = !empty($edit) ? $form['#return_value'] : 0;
             break;
           case 'select':
-            if (isset($edit)) {
-              $form['#value'] = $edit;
+            if (isset($form['#multiple']) && $form['#multiple']) {
+              if (isset($edit) && is_array($edit)) {
+                $form['#value'] = drupal_map_assoc($edit);
+              }
+              else {
+                $form['#value'] = array();
+              }
             }
-            elseif (isset($form['#multiple']) && $form['#multiple']) {
-              $form['#value'] = array();
+            elseif (isset($edit)) {
+              $form['#value'] = $edit;
             }
             break;
           case 'textfield':