summaryrefslogtreecommitdiff
blob: bf3d00535bf66efdd3307c65453f2db394b53892 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Avoid infinite loop in resolveSymlink.
Backported from doxygen trunk to 1.5.8.
Reference: http://bugs.gentoo.org/266693
2009-04-19 Martin von Gagern

--- trunk/src/doxygen.cpp	2009/01/17 16:16:15	677
+++ trunk/src/doxygen.cpp	2009/01/29 20:13:23	678
@@ -8617,6 +8617,7 @@
   QDict<void> nonSymlinks;
   QDict<void> known;
   QCString result = path;
+  QCString oldPrefix = "/";
   do
   {
 #ifdef WIN32
@@ -8637,7 +8638,7 @@
         QString target = fi.readLink();
         if (QFileInfo(target).isRelative())
         {
-          target = QDir::cleanDirPath(prefix+"/"+target.data());
+          target = QDir::cleanDirPath(oldPrefix+"/"+target.data());
         }
         if (sepPos!=-1)
         {
@@ -8656,6 +8657,7 @@
       {
         nonSymlinks.insert(prefix,(void*)0x8);
       }
+      oldPrefix = prefix;
     }
   }
   while (sepPos!=-1);