Blame doxygen-1.7.1-doxygen#625531.patch

Than Ngo 633de6
diff -up doxygen-1.7.1/src/classdef.cpp.me doxygen-1.7.1/src/classdef.cpp
Than Ngo 633de6
--- doxygen-1.7.1/src/classdef.cpp.me	2010-09-08 14:55:33.000000000 +0200
Than Ngo 633de6
+++ doxygen-1.7.1/src/classdef.cpp	2010-09-08 14:58:02.000000000 +0200
Than Ngo 633de6
@@ -2162,20 +2162,18 @@ bool ClassDef::isBaseClass(ClassDef *bcd
Than Ngo 633de6
   }
Than Ngo 633de6
   if (baseClasses())
Than Ngo 633de6
   {
Than Ngo 633de6
-    //BaseClassListIterator bcli(*baseClasses());
Than Ngo 633de6
-    //for ( ; bcli.current() && !found ; ++bcli)
Than Ngo 633de6
-    BaseClassDef *bcdi = baseClasses()->first();
Than Ngo 633de6
-    while (bcdi)
Than Ngo 633de6
+    // Beware: trying to optimise the iterator away using ->first() & ->next()
Than Ngo 633de6
+    // causes bug 625531
Than Ngo 633de6
+    BaseClassListIterator bcli(*baseClasses());
Than Ngo 633de6
+    for ( ; bcli.current() && !found ; ++bcli)
Than Ngo 633de6
     {
Than Ngo 633de6
-      //ClassDef *ccd=bcli.current()->classDef;
Than Ngo 633de6
-      ClassDef *ccd=bcdi->classDef;
Than Ngo 633de6
+      ClassDef *ccd=bcli.current()->classDef;
Than Ngo 633de6
       if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster();
Than Ngo 633de6
       //printf("isBaseClass() baseclass %s\n",ccd->name().data());
Than Ngo 633de6
       if (ccd==bcd) 
Than Ngo 633de6
         found=TRUE;
Than Ngo 633de6
       else 
Than Ngo 633de6
         found=ccd->isBaseClass(bcd,followInstances,level+1);
Than Ngo 633de6
-      bcdi = baseClasses()->next();
Than Ngo 633de6
     }
Than Ngo 633de6
   }
Than Ngo 633de6
   return found;