Index: password_policy.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/password_policy/password_policy.admin.inc,v
retrieving revision 1.12
diff -u -r1.12 password_policy.admin.inc
--- password_policy.admin.inc	15 Mar 2010 17:24:08 -0000	1.12
+++ password_policy.admin.inc	2 Apr 2010 18:34:57 -0000
@@ -254,8 +254,7 @@
     '#collapsed' => FALSE
   );
 
-  global $_password_policy;
-  foreach ($_password_policy as $constraint) {
+  foreach (_password_policy_contraints() as $constraint) {
     $desc = _password_policy_constraint_description($constraint);
     $form['constraints']['constraint_'. $constraint] = array(
       '#type' => 'textfield',
Index: password_policy.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/password_policy/password_policy.module,v
retrieving revision 1.26
diff -u -r1.26 password_policy.module
--- password_policy.module	15 Mar 2010 17:24:08 -0000	1.26
+++ password_policy.module	2 Apr 2010 18:37:43 -0000
@@ -32,17 +32,6 @@
  * Implementation of hook_init().
  */
 function password_policy_init() {
-  global $_password_policy;
-
-  // Save all available constrains in a global variable.
-  $dir = drupal_get_path('module', 'password_policy') .'/constraints';
-  $constraints = file_scan_directory($dir, '^constraint.*\.inc$');
-  foreach ($constraints as $file) {
-    if (is_file($file->filename)) {
-      include_once($file->filename);
-      $_password_policy[] = drupal_substr($file->name, 11);
-    }
-  }
 }
 
 /**
@@ -591,6 +580,9 @@
  *   NULL or array with error messages.
  */
 function _password_policy_constraint_validate($pass, &$account) {
+  // Load constraints if not already done.
+  _password_policy_contraints();
+
   $error = NULL;
   $roles = is_array($account->roles) ? array_keys($account->roles) : array();
   $policy = _password_policy_load_active_policy($roles);
@@ -614,6 +606,9 @@
  *   Array containing the name and description.
  */
 function _password_policy_constraint_description($name) {
+  // Load constraints if not already done.
+  _password_policy_contraints();
+
   return call_user_func('password_policy_constraint_'. $name .'_description');
 }
 
@@ -629,6 +624,9 @@
  *   Error message.
  */
 function _password_policy_constraint_error($name, $constraint) {
+  // Load constraints if not already done.
+  _password_policy_contraints();
+
   return call_user_func('password_policy_constraint_'. $name .'_error', $constraint);
 }
 
@@ -646,6 +644,9 @@
  *   Javascript code snippet for the constraint.
  */
 function _password_policy_constraint_js($name, $constraint, $uid) {
+  // Load constraints if not already done.
+  _password_policy_contraints();
+
   if (function_exists('password_policy_constraint_'. $name .'_js')) {
     return call_user_func('password_policy_constraint_'. $name .'_js', $constraint, $uid);
   }
@@ -655,6 +656,29 @@
 // Auxiliary functions
 
 /**
+ * Load contrainst inc files.
+ */
+function _password_policy_contraints() {
+  static $_password_policy;
+
+  if (!isset($_password_policy)) {
+    // Save all available constrains in a static variable.
+    $dir = drupal_get_path('module', 'password_policy') .'/constraints';
+    $constraints = file_scan_directory($dir, '^constraint.*\.inc$');
+    $_password_policy = array();
+    
+    foreach ($constraints as $file) {
+      if (is_file($file->filename)) {
+        include_once($file->filename);
+        $_password_policy[] = drupal_substr($file->name, 11);
+      }
+    }
+  }
+  
+  return $_password_policy;
+}
+
+/**
  * Loads the policy with the specified id.
  *
  * @param $pid

