Index: user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.745.2.1
diff -u -p -r1.745.2.1 user.module
--- user.module	29 Jan 2007 19:08:46 -0000	1.745.2.1
+++ user.module	1 Feb 2007 11:38:05 -0000
@@ -45,7 +45,25 @@ function user_external_load($authname) {
  * @return
  *   A fully-loaded $user object upon successful user load or FALSE if user cannot be loaded.
  */
-function user_load($array = array()) {
+function user_load($array = array(), $reset = NULL) {  
+  static $users = array();
+
+  if ($reset) {
+    $users = array();
+  }
+  
+  foreach ($array as $key => $value) {
+    if ($key == 'uid'){
+      if (isset($users[$value])){
+        return drupal_clone($users[$value]);
+      }
+      else{
+        // uid is not cached
+        break;
+      }
+    }
+  }
+  
   // Dynamically compose a SQL query:
   $query = array();
   $params = array();
@@ -82,6 +100,7 @@ function user_load($array = array()) {
       $user->roles[$role->rid] = $role->name;
     }
     user_module_invoke('load', $array, $user);
+    $users[$user->uid] = drupal_clone($user);
   }
   else {
     $user = FALSE;
