Index: og_user_roles.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og_user_roles/og_user_roles.module,v
retrieving revision 1.1.2.17.2.5
diff -u -u -p -r1.1.2.17.2.5 og_user_roles.module
--- og_user_roles.module	27 Feb 2009 06:59:14 -0000	1.1.2.17.2.5
+++ og_user_roles.module	20 May 2009 14:47:05 -0000
@@ -1360,7 +1360,7 @@ function og_user_roles_init() {
     // Then redirect back to referrer.
 	// As a result of http://drupal.org/node/176662 this can only be done if the
 	// "Allow group admins to approve users" setting is checked on.
-    if (variable_get('og_user_roles_approval_default', 0) == 1 && ((!user_access('access administration pages')) && (arg(0) == 'user' && is_numeric(arg(1)) && arg(1) != 1) || (arg(0) == 'admin' && arg(1) == 'user' && arg(2) == 'user'))) {
+    if (variable_get('og_user_roles_approval_default', 0) == 1 && ((!user_access('access administration pages')) && (arg(0) == 'user' && is_numeric(arg(1)) && arg(1) != 1 && arg(2) == '') || (arg(0) == 'admin' && arg(1) == 'user' && arg(2) == 'user'))) {
       $ref = $_SERVER["HTTP_REFERER"];
       $ref_url = parse_url($ref);
       $ref_path = $ref_url[path];
@@ -1949,12 +1949,20 @@ function og_user_roles_all_roles($user) 
   //
 
   $group_node = og_get_group_context();
+  if (!$group_node) {
+    // If called too early, i.e., before og is initialized, then initialize og
+    // @NOTE: we can't call module_invoke('og', 'init') because that calls user_load() which calls this function.
+    og_theme();
+    if (!($group_node = og_get_group_context())) {
+      return $user->roles;
+    }
+  }
   $gid02 = $group_node->nid;
   $gid = $gid02;
   if ($gid02 === NULL) {
     $gid = 0;
   }else{
-    if (isset($_SESSION['og_last'])) $_SESSION['og_last'] = $group_node;
+    if (isset($_SESSION['og_last'])) $_SESSION['og_last'] = gid02;
     $_SESSION['og_user_role'] = $gid;
   }
 
@@ -3909,4 +3917,4 @@ function og_user_roles_mail_alter(&$mail
 
 }
 
-?>
\ No newline at end of file
+?>
