# HG changeset patch
# User Alpar Juttner <alpar@cs.elte.hu>
# Date 1285140773 -7200
# Node ID 1861d5dcf3121bbef6c237910ab05e367c6dc977
# Parent  b406ed1c86034e1df57db526d9feaf2edfff1c80# Parent  e24922c56bc2e6cef6cff65c251ce6000005d00f
Merge bugfix #392 to branch 1.2

diff -r b406ed1c8603 -r 1861d5dcf312 lemon/dfs.h
--- a/lemon/dfs.h	Tue Sep 21 06:32:07 2010 +0200
+++ b/lemon/dfs.h	Wed Sep 22 09:32:53 2010 +0200
@@ -565,7 +565,7 @@
     ///added with addSource() before using this function.
     void start(Node t)
     {
-      while ( !emptyQueue() && G->target(_stack[_stack_head])!=t )
+      while ( !emptyQueue() && !(*_reached)[t] )
         processNextArc();
     }
 
@@ -1512,7 +1512,7 @@
     /// \pre init() must be called and a root node should be added
     /// with addSource() before using this function.
     void start(Node t) {
-      while ( !emptyQueue() && _digraph->target(_stack[_stack_head]) != t )
+      while ( !emptyQueue() && !(*_reached)[t] )
         processNextArc();
     }
 
diff -r b406ed1c8603 -r 1861d5dcf312 test/dfs_test.cc
--- a/test/dfs_test.cc	Tue Sep 21 06:32:07 2010 +0200
+++ b/test/dfs_test.cc	Wed Sep 22 09:32:53 2010 +0200
@@ -50,7 +50,10 @@
   "6 3  7\n"
   "@attributes\n"
   "source 0\n"
-  "target 5\n";
+  "target 5\n"
+  "source1 6\n"
+  "target1 3\n";
+
 
 void checkDfsCompile()
 {
@@ -179,11 +182,14 @@
 
   Digraph G;
   Node s, t;
+  Node s1, t1;
 
   std::istringstream input(test_lgf);
   digraphReader(G, input).
     node("source", s).
     node("target", t).
+    node("source1", s1).
+    node("target1", t1).
     run();
 
   Dfs<Digraph> dfs_test(G);
@@ -210,6 +216,11 @@
   }
 
   {
+  Dfs<Digraph> dfs(G);
+  check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6.");
+  }
+  
+  {
     NullMap<Node,Arc> myPredMap;
     dfs(G).predMap(myPredMap).run(s);
   }