From a3e9a02ae67cf1e55b29afc63fec2615198c08d5 Mon Sep 17 00:00:00 2001 From: Jim Weirich Date: Thu, 21 Feb 2013 00:19:54 -0800 Subject: [PATCH] Switch to hash for recording already seen tasks in all_prerequisite_tasks. --- lib/rake/task.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/rake/task.rb b/lib/rake/task.rb index d674852d9..d9ce00356 100644 --- a/lib/rake/task.rb +++ b/lib/rake/task.rb @@ -65,14 +65,17 @@ def lookup_prerequisite(prerequisite_name) # prerequisites. # Includes self when cyclic dependencies are found. def all_prerequisite_tasks - fetch_prerequisites + seen = {} + collect_prerequisites(seen) + seen.values end - def fetch_prerequisites(list=[]) + def collect_prerequisites(seen) prerequisite_tasks.each do |pre| - list << pre and pre.fetch_prerequisites(list) unless list.include?(pre) + next if seen[pre.name] + seen[pre.name] = pre + pre.collect_prerequisites(seen) end - list end protected :fetch_prerequisites