Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.776
diff -u -r1.776 common.inc
--- includes/common.inc	2 Jul 2008 19:36:52 -0000	1.776
+++ includes/common.inc	8 Jul 2008 19:40:30 -0000
@@ -1503,20 +1503,13 @@
  *   An associative array.
  */
 function drupal_map_assoc($array, $function = NULL) {
-  if (!isset($function)) {
-    $result = array();
-    foreach ($array as $value) {
-      $result[$value] = $value;
-    }
-    return $result;
-  }
-  elseif (function_exists($function)) {
-    $result = array();
-    foreach ($array as $value) {
-      $result[$value] = $function($value);
-    }
-    return $result;
+  $result = array_combine($array, $array);
+
+  if (isset($function) && function_exists($function)) {
+    $result = array_map($function, $result);
   }
+
+  return $result;
 }
 
 /**
