From e847e491e527fd432845bc1e01addf6a9a5611c2 Mon Sep 17 00:00:00 2001
From: Marco Antonio Villegas Vega <marvil07@gmail.com>
Date: Fri, 10 Jul 2009 11:17:43 -0500
Subject: [PATCH] Avoid losing previous values on static variables

If we initialize each time the variable, we lose previous changes, so for
example cache variables are retrieved every call.
---
 versioncontrol-backend.inc |    3 +++
 versioncontrol.module      |   15 ++++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/versioncontrol-backend.inc b/versioncontrol-backend.inc
index bea8b77..024a6f5 100644
--- a/versioncontrol-backend.inc
+++ b/versioncontrol-backend.inc
@@ -161,6 +161,9 @@ function versioncontrol_get_access_errors() {
  */
 function _versioncontrol_access_errors($new_messages = NULL) {
   static $error_messages = array();
+  if (!isset($error_messages)) {
+    $error_messages = array();
+  }
 
   if (isset($new_messages)) {
     $error_messages = $new_messages;
diff --git a/versioncontrol.module b/versioncontrol.module
index 8a5c0df..e4e04c1 100644
--- a/versioncontrol.module
+++ b/versioncontrol.module
@@ -677,7 +677,10 @@ function versioncontrol_get_repository($repo_id) {
  *   an empty array is returned.
  */
 function versioncontrol_get_repositories($constraints = array()) {
-  static $repository_cache = array();
+  static $repository_cache;
+  if (!isset($repository_cache)) {
+    $repository_cache = array();
+  }
 
   $backends = versioncontrol_get_backends();
   $auth_methods = versioncontrol_get_authorization_methods();
@@ -1353,7 +1356,10 @@ function _versioncontrol_construct_operation_query(&$constraints, &$tables) {
  * elements 'callback' and 'cardinality'.
  */
 function _versioncontrol_operation_constraint_info() {
-  static $constraint_info = array();
+  static $constraint_info;
+  if (!isset($constraint_info)) {
+    $constraint_info = array();
+  }
 
   if (empty($constraint_info)) {
     foreach (module_implements('versioncontrol_operation_constraint_info') as $module) {
@@ -3032,7 +3038,10 @@ function versioncontrol_get_url_tracker($repository, $issue_id) {
  *   - 'tracker': The issue/bug/case URL of the associated issue tracker.
  */
 function _versioncontrol_get_repository_urls($repository) {
-  static $urls_by_repository = array();
+  static $urls_by_repository;
+  if (!isset($urls_by_repository)) {
+    $urls_by_repository = array();
+  }
 
   if (!isset($urls_by_repository[$repository['repo_id']])) {
     $result = db_query('SELECT * FROM {versioncontrol_repository_urls}
-- 
1.5.6.5

