--- untitled.php	2007-05-26 13:01:34.000000000 +0200
+++ rolesignup.module	2007-05-26 13:01:42.000000000 +0200
@@ -41,7 +41,13 @@
   if ($form_id == "user_register") {
     global $user;
     if (!user_access('administer users') && !$_SESSION['role']) {
-      drupal_goto('user/register/role', drupal_get_destination());
+      //Invite support
+      if(module_exist('invite')) {
+        if($invite_code=arg(2)) {
+          $_SESSION['invite_code'] = $invite_code;
+        }
+      }
+      drupal_goto('user/register/role');
     } else {
       $form['role'] = array(
         '#type' => 'value',
@@ -72,6 +78,7 @@
     case 'insert':
     $roles = user_roles(1,'register for role');
     if ($roles[$_SESSION['role']]) {
+      db_query("DELETE FROM {users_roles} WHERE uid=%d AND rid=%d", $account->uid, $_SESSION['role']);
       db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)", $account->uid, $_SESSION['role']);
     }
   }
