Index: class-wp-users-list-table.php
===================================================================
--- class-wp-users-list-table.php	(revision 25910)
+++ class-wp-users-list-table.php	(working copy)
@@ -33,7 +33,7 @@
 	}
 
 	function prepare_items() {
-		global $role, $usersearch;
+		global $role, $wp_roles, $usersearch;
 
 		$usersearch = isset( $_REQUEST['s'] ) ? trim( $_REQUEST['s'] ) : '';
 
@@ -64,11 +64,19 @@
 		if ( isset( $_REQUEST['order'] ) )
 			$args['order'] = $_REQUEST['order'];
 
+		if ( $this->is_site_users )
+			switch_to_blog( $this->site_id );
+
 		// Query the user IDs for this page
 		$wp_user_search = new WP_User_Query( $args );
 
 		$this->items = $wp_user_search->get_results();
+		$this->users_of_blog = count_users();
+		$this->role_names = $wp_roles->get_names();
 
+		if ( $this->is_site_users )
+			restore_current_blog(); 
+
 		$this->set_pagination_args( array(
 			'total_items' => $wp_user_search->get_total(),
 			'per_page' => $users_per_page,
@@ -80,26 +88,22 @@
 	}
 
 	function get_views() {
-		global $wp_roles, $role;
+		global $role;
 
 		if ( $this->is_site_users ) {
 			$url = 'site-users.php?id=' . $this->site_id;
-			switch_to_blog( $this->site_id );
-			$users_of_blog = count_users();
-			restore_current_blog();
 		} else {
 			$url = 'users.php';
-			$users_of_blog = count_users();
 		}
-		$total_users = $users_of_blog['total_users'];
-		$avail_roles =& $users_of_blog['avail_roles'];
-		unset($users_of_blog);
+		$total_users = $this->users_of_blog[ 'total_users' ];
+		$avail_roles =& $this->users_of_blog[ 'avail_roles' ];
+		unset( $this->users_of_blog );
 
 		$current_role = false;
 		$class = empty($role) ? ' class="current"' : '';
 		$role_links = array();
 		$role_links['all'] = "<a href='$url'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_users, 'users' ), number_format_i18n( $total_users ) ) . '</a>';
-		foreach ( $wp_roles->get_names() as $this_role => $name ) {
+		foreach ( $this->role_names as $this_role => $name ) {
 			if ( !isset($avail_roles[$this_role]) )
 				continue;
 
@@ -225,7 +229,6 @@
 	 * @return string
 	 */
 	function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) {
-		global $wp_roles;
 
 		if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) )
 			$user_object = get_userdata( (int) $user_object );
@@ -267,7 +270,7 @@
 		} else {
 			$edit = '<strong>' . $user_object->user_login . '</strong>';
 		}
-		$role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' );
+		$role_name = isset( $this->role_names[$role] ) ? translate_user_role( $this->role_names[$role] ) : __( 'None' );
 		$avatar = get_avatar( $user_object->ID, 32 );
 
 		$r = "<tr id='user-$user_object->ID'$style>";
