Index: nodequeue.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodequeue/nodequeue.module,v
retrieving revision 1.80
diff -u -p -r1.80 nodequeue.module
--- nodequeue.module	20 May 2009 15:57:40 -0000	1.80
+++ nodequeue.module	26 May 2009 12:46:18 -0000
@@ -1834,7 +1834,7 @@ function nodequeue_get_all_qids($page_si
  */
 function nodequeue_load_queues($qids = array(), $bypass_cache = FALSE) {
   static $cache = array();
-  $to_load = $queues = array();
+  $to_load = $loaded = array();
 
   foreach ($qids as $qid) {
     if ($bypass_cache || !isset($cache[$qid])) {
@@ -1846,30 +1846,39 @@ function nodequeue_load_queues($qids = a
     $placeholders = db_placeholders($to_load, 'int');
     $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN ($placeholders) GROUP BY q.qid", $to_load);
     while ($queue = db_fetch_object($result)) {
-      $cache[$queue->qid] = $queue;
+      $loaded[$queue->qid] = $queue;
       // ensure valid defaults:
-      $cache[$queue->qid]->types = array();
-      $cache[$queue->qid]->roles = array();
-      $cache[$queue->qid]->count = 0;
+      $loaded[$queue->qid]->types = array();
+      $loaded[$queue->qid]->roles = array();
+      $loaded[$queue->qid]->count = 0;
     }
 
     $result = db_query("SELECT qid, rid FROM {nodequeue_roles} WHERE qid IN ($placeholders)", $to_load);
     while ($obj = db_fetch_object($result)) {
-      $cache[$obj->qid]->roles[] = $obj->rid;
+      $loaded[$obj->qid]->roles[] = $obj->rid;
     }
 
     $result = db_query("SELECT qid, type FROM {nodequeue_types} WHERE qid IN ($placeholders)", $to_load);
     while ($obj = db_fetch_object($result)) {
-      $cache[$obj->qid]->types[] = $obj->type;
+      $loaded[$obj->qid]->types[] = $obj->type;
     }
   }
 
-  foreach ($qids as $qid) {
-    if (isset($cache[$qid])) {
-      $queues[$qid] = $cache[$qid];
+  if ($bypass_cache) {
+    return $loaded;
+  }
+  else {
+    if (!empty($loaded)) {
+      $cache += $loaded;
+    }
+    $queues = array();
+    foreach ($qids as $qid) {
+      if (isset($cache[$qid])) {
+        $queues[$qid] = $cache[$qid];
+      }
     }
+    return $queues;
   }
-  return $queues;
 }
 
 /**
