diff --git a/includes/features.user.inc b/includes/features.user.inc
index 0b13514..34802af 100644
--- a/includes/features.user.inc
+++ b/includes/features.user.inc
@@ -64,12 +64,12 @@ function user_permission_features_export_options() {
 /**
  * Implements hook_features_export_render().
  */
-function user_permission_features_export_render($module, $data) {  
+function user_permission_features_export_render($module, $data) {
   $perm_modules = &drupal_static(__FUNCTION__ . '_perm_modules');
   if (!isset($perm_modules)) {
     $perm_modules = user_permission_get_modules();
   }
-  
+
   $code = array();
   $code[] = '  $permissions = array();';
   $code[] = '';
@@ -123,15 +123,18 @@ function user_permission_features_rebuild($module) {
     node_types_rebuild();
 
     $roles = _user_features_get_roles();
+    drupal_static_reset(); // ensure current list of permissions is fetched
     $permissions_by_role = _user_features_get_permissions(FALSE);
     foreach ($defaults as $permission) {
       $perm = $permission['name'];
       foreach ($roles as $role) {
-        if (in_array($role, $permission['roles'])) {
-          $permissions_by_role[$role][$perm] = TRUE;
-        }
-        else {
-          $permissions_by_role[$role][$perm] = FALSE;
+        if (isset($permissions_by_role[$role][$perm])) {
+          if (in_array($role, $permission['roles'])) {
+            $permissions_by_role[$role][$perm] = TRUE;
+          }
+          else {
+            $permissions_by_role[$role][$perm] = FALSE;
+          }
         }
       }
     }
