[doxygen] - bz#629286, apply patch to fix broken thread handling - bz#627553, #define in included file in diff
Than Ngo
than at fedoraproject.org
Wed Sep 8 12:50:08 UTC 2010
commit 633de6631603e0a6b791e7d7289ff49cb5f15fee
Author: Than Ngo <than at redhat.com>
Date: Wed Sep 8 15:00:43 2010 +0200
- bz#629286, apply patch to fix broken thread handling
- bz#627553, #define in included file in different directory not handled properly
- Inherited documentation doesn't work in case of multiple inheritance
doxygen-1.7.1-bz#627553.patch | 14 +++++++++
doxygen-1.7.1-dot-crash.patch | 54 ++++++++++++++++++++++++++++++++++++
doxygen-1.7.1-doxygen#625531.patch | 29 +++++++++++++++++++
doxygen.spec | 14 ++++++++-
4 files changed, 110 insertions(+), 1 deletions(-)
---
diff --git a/doxygen-1.7.1-bz#627553.patch b/doxygen-1.7.1-bz#627553.patch
new file mode 100644
index 0000000..fb61758
--- /dev/null
+++ b/doxygen-1.7.1-bz#627553.patch
@@ -0,0 +1,14 @@
+--- doxygen-1.7.1/src/pre.l 2010-06-18 12:04:30.000000000 +0200
++++ doxygen-1.7.1/src/pre.l.include 2010-08-26 12:36:27.000000000 +0200
+@@ -128,6 +128,11 @@ static void setFileName(const char *name
+ QFileInfo fi(name);
+ g_yyFileName=convertToQCString(fi.absFilePath());
+ g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig);
++ if (g_yyFileDef==0) // if this is not an input file check if it is an
++ // include file
++ {
++ g_yyFileDef=findFileDef(Doxygen::includeNameDict,g_yyFileName,ambig);
++ }
+ //printf("setFileName(%s) g_yyFileName=%s g_yyFileDef=%p\n",
+ // name,g_yyFileName.data(),g_yyFileDef);
+ if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0;
diff --git a/doxygen-1.7.1-dot-crash.patch b/doxygen-1.7.1-dot-crash.patch
new file mode 100644
index 0000000..a146fe8
--- /dev/null
+++ b/doxygen-1.7.1-dot-crash.patch
@@ -0,0 +1,54 @@
+--- a/src/dot.cpp
++++ b/src/dot.cpp
+@@ -734,6 +734,8 @@
+
+ //--------------------------------------------------------------------
+
++#define DIRECT_DOT_RUN 1
++
+ DotManager *DotManager::m_theInstance = 0;
+
+ DotManager *DotManager::instance()
+@@ -750,6 +752,7 @@
+ m_dotRuns.setAutoDelete(TRUE);
+ m_dotMaps.setAutoDelete(TRUE);
+ m_queue = new DotRunnerQueue;
++#ifndef DIRECT_DOT_RUN
+ int i;
+ int numThreads = QMIN(32,Config_getInt("DOT_NUM_THREADS"));
+ if (numThreads==0) numThreads = QMAX(1,QThread::idealThreadCount()+1);
+@@ -767,6 +770,7 @@
+ }
+ }
+ ASSERT(m_workers.count()>0);
++#endif
+ }
+
+ DotManager::~DotManager()
+@@ -834,11 +838,17 @@
+ portable_sysTimerStart();
+ // fill work queue with dot operations
+ DotRunner *dr;
++ int prev=1;
+ for (li.toFirst();(dr=li.current());++li)
+ {
++#ifdef DIRECT_DOT_RUN
++ msg("Running dot for graph %d/%d\n",prev,numDotRuns);
++ if(!dr->run()) return FALSE;
++ prev++;
++ };
++#else
+ m_queue->enqueue(dr);
+ }
+- int prev=1;
+ // wait for the queue to become empty
+ while ((i=m_queue->count())>0)
+ {
+@@ -865,6 +875,7 @@
+ {
+ m_workers.at(i)->wait();
+ }
++#endif
+ portable_sysTimerStop();
+ if (setPath)
+ {
diff --git a/doxygen-1.7.1-doxygen#625531.patch b/doxygen-1.7.1-doxygen#625531.patch
new file mode 100644
index 0000000..af16c33
--- /dev/null
+++ b/doxygen-1.7.1-doxygen#625531.patch
@@ -0,0 +1,29 @@
+diff -up doxygen-1.7.1/src/classdef.cpp.me doxygen-1.7.1/src/classdef.cpp
+--- doxygen-1.7.1/src/classdef.cpp.me 2010-09-08 14:55:33.000000000 +0200
++++ doxygen-1.7.1/src/classdef.cpp 2010-09-08 14:58:02.000000000 +0200
+@@ -2162,20 +2162,18 @@ bool ClassDef::isBaseClass(ClassDef *bcd
+ }
+ if (baseClasses())
+ {
+- //BaseClassListIterator bcli(*baseClasses());
+- //for ( ; bcli.current() && !found ; ++bcli)
+- BaseClassDef *bcdi = baseClasses()->first();
+- while (bcdi)
++ // Beware: trying to optimise the iterator away using ->first() & ->next()
++ // causes bug 625531
++ BaseClassListIterator bcli(*baseClasses());
++ for ( ; bcli.current() && !found ; ++bcli)
+ {
+- //ClassDef *ccd=bcli.current()->classDef;
+- ClassDef *ccd=bcdi->classDef;
++ ClassDef *ccd=bcli.current()->classDef;
+ if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster();
+ //printf("isBaseClass() baseclass %s\n",ccd->name().data());
+ if (ccd==bcd)
+ found=TRUE;
+ else
+ found=ccd->isBaseClass(bcd,followInstances,level+1);
+- bcdi = baseClasses()->next();
+ }
+ }
+ return found;
diff --git a/doxygen.spec b/doxygen.spec
index 1a0867e..7375667 100644
--- a/doxygen.spec
+++ b/doxygen.spec
@@ -1,12 +1,16 @@
Summary: A documentation system for C/C++
Name: doxygen
Version: 1.7.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Epoch: 1
Url: http://www.stack.nl/~dimitri/doxygen/index.html
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Patch1: doxygen-1.7.1-config.patch
Patch2: doxygen-1.6.2-timestamp.patch
+# debian patch
+Patch3: doxygen-dot-crash.patch
+Patch4: doxygen-1.7.1-bz#627553.patch
+Patch5: doxygen-1.7.1-doxygen#625531.patch
Group: Development/Tools
# No version is specified.
@@ -45,6 +49,9 @@ are used by doxygen.
%patch1 -p1 -b .config
%patch2 -p1 -b .timestamp
+%patch3 -p1 -b .crash
+%patch4 -p1 -b .bz#627553
+%patch5 -p1 -b .doxygen#625531
%build
unset QTDIR
@@ -97,6 +104,11 @@ rm -rf %{buildroot}
%{_mandir}/man1/doxywizard*
%changelog
+* Wed Sep 08 2010 Than Ngo <than at redhat.com> - 1:1.7.1-2
+- bz#629286, apply patch to fix broken thread handling
+- bz#627553, #define in included file in different directory not handled properly
+- Inherited documentation doesn't work in case of multiple inheritance
+
* Mon Jul 19 2010 Than Ngo <than at redhat.com> - 1.7.1-1
- 1.7.1
More information about the scm-commits
mailing list