Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 3571)
+++ wp-includes/capabilities.php	(working copy)
@@ -13,8 +13,14 @@
 
 		$this->roles = get_option($this->role_key);
 
-		if ( empty($this->roles) )
-			return;
+		if ( empty($this->roles) ) {
+			if ( $table_prefix != substr($wpdb->options, 0, strlen($wpdb->options) - 7) ) {
+				// we're using a custom options table, but our roles are set in the normal options table
+				$this->roles = $wpdb->get_var("SELECT option_value FROM" . $tableprefix . "options WHERE option_name = '$this->role_key'");
+			}
+			if ( empty($this->roles) )
+				return;
+		}
 
 		foreach ($this->roles as $role => $data) {
 			$this->role_objects[$role] = new WP_Role($role, $this->roles[$role]['capabilities']);
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 3571)
+++ wp-settings.php	(working copy)
@@ -91,6 +91,8 @@
 	$wpdb->users = CUSTOM_USER_TABLE;
 if ( defined('CUSTOM_USER_META_TABLE') )
 	$wpdb->usermeta = CUSTOM_USER_META_TABLE;
+if ( defined('CUSTOM_OPTIONS_TABLE') )
+	$wpdb->options = CUSTOM_OPTIONS_TABLE;
 
 // We're going to need to keep this around for a few months even though we're not using it internally
 
