rebase to 1.9.1

This commit is contained in:
Than Ngo 2021-01-11 17:48:59 +01:00
parent 4be37ca6b9
commit b2647be5a1
11 changed files with 7 additions and 463 deletions

1
.gitignore vendored
View File

@ -52,3 +52,4 @@ doxygen-1.7.1.src.tar.gz
/doxygen-1.8.17.src.tar.gz
/doxygen-1.8.18.src.tar.gz
/doxywizard-icons.tar.xz
/doxygen-1.9.1.src.tar.gz

View File

@ -1,20 +0,0 @@
commit ff021223c89995bf2abc4f33befddb1c97cab1d8
Author: albert-github <albert.tests@gmail.com>
Date: Thu Sep 24 19:12:10 2020 +0200
issue #8053 error: Attribute target redefined in SVG
regression on #7706 (although it has nothing to do with double runs in my opinion as indicated in the title of that issue: " Md5 hash does not match for two different runs") looks like this statement should be present.
diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp
index 099359d9..285c0bb8 100644
--- a/src/dotfilepatcher.cpp
+++ b/src/dotfilepatcher.cpp
@@ -174,6 +174,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath,
if (!ref.isEmpty())
{
result = externalLinkTarget(true);
+ if (!result.isEmpty())targetAlreadySet=true;
}
result+= href+"=\"";
result+=externalRef(relPath,ref,TRUE);

View File

@ -1,49 +0,0 @@
commit 63dc5b9b1b3e8fb875304a954e4df934b249034b
Author: Dimitri van Heesch <doxygen@gmail.com>
Date: Wed Aug 26 21:23:29 2020 +0200
issue #7977: Broken ref for enum entry (doxygen 1.8.18 -> 1.8.19)
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 757e7831..d5512925 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -6946,7 +6946,14 @@ static void addEnumValuesToEnums(const Entry *root)
MemberName *mn = mnsd->find(name); // for all members with this name
if (mn)
{
- std::vector< std::unique_ptr<MemberDef> > extraMembers;
+ struct EnumValueInfo
+ {
+ EnumValueInfo(const QCString &n,std::unique_ptr<MemberDef> &md) :
+ name(n), member(std::move(md)) {}
+ QCString name;
+ std::unique_ptr<MemberDef> member;
+ };
+ std::vector< EnumValueInfo > extraMembers;
// for each enum in this list
for (const auto &md : *mn)
{
@@ -7006,8 +7013,7 @@ static void addEnumValuesToEnums(const Entry *root)
fmd->setAnchor();
md->insertEnumField(fmd.get());
fmd->setEnumScope(md.get(),TRUE);
- mn=mnsd->add(e->name);
- extraMembers.push_back(std::move(fmd));
+ extraMembers.push_back(EnumValueInfo(e->name,fmd));
}
}
else
@@ -7071,9 +7077,10 @@ static void addEnumValuesToEnums(const Entry *root)
}
}
// move the newly added members into mn
- for (auto &md : extraMembers)
+ for (auto &e : extraMembers)
{
- mn->push_back(std::move(md));
+ MemberName *emn=mnsd->add(e.name);
+ emn->push_back(std::move(e.member));
}
}
}

View File

@ -1,58 +0,0 @@
commit 7c429806b072dd8bf777d93035ffda817976adc0
Author: albert-github <albert.tests@gmail.com>
Date: Wed Sep 2 11:32:42 2020 +0200
issue #7995 Doxygen doesn't handle very simple example in the .md file
Besides "keep utf8 characters together..." as done for the C-type parser in code.l (commit d3d9dd8540ec159de080859c8f34a2581c4147f0) this also has to be done for the Fortran, SQL and VHDL code lexers. The code lexers for python and xml already didn't give errors as they already handled these cases for the example.
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 4951001c..5d036e8a 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -1272,6 +1272,17 @@ LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?")
}
<*>^{BS}"type"{BS}"=" { g_code->codify(yytext); }
+<*>[\x80-\xFF]* { // keep utf8 characters together...
+ if (g_isFixedForm && yy_my_start > fixedCommentAfter)
+ {
+ startFontClass("comment");
+ codifyLines(yytext);
+ }
+ else
+ {
+ g_code->codify(yytext);
+ }
+ }
<*>. {
if (g_isFixedForm && yy_my_start > fixedCommentAfter)
{
diff --git a/src/sqlcode.l b/src/sqlcode.l
index 58a2fce9..22a5e170 100644
--- a/src/sqlcode.l
+++ b/src/sqlcode.l
@@ -190,6 +190,9 @@ commentclose "\*/"
codifyLines(yytext,yyscanner);
}
+[\x80-\xFF]* { // keep utf8 characters together...
+ codifyLines(yytext,yyscanner);
+ }
. {
codifyLines(yytext,yyscanner);
}
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 808e5a29..dcace05d 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1497,6 +1497,9 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
BEGIN(Bases);
}
+<*>[\x80-\xFF]* { // keep utf8 characters together...
+ g_code->codify(vhdlcodeYYtext);
+ }
<*>. {
g_code->codify(vhdlcodeYYtext);
}

View File

@ -1,86 +0,0 @@
From 9d9d08582ccea7ef90000acebfd09f8c8acc577a Mon Sep 17 00:00:00 2001
From: Dimitri van Heesch <doxygen@gmail.com>
Date: Fri, 28 Aug 2020 20:22:46 +0200
Subject: [PATCH] issue #7979: C++ enums being defined in multiple files after
b265433 (multi-thread input processing)
---
src/scanner.l | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/scanner.l b/src/scanner.l
index 7c710fa4..70f15d65 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -60,6 +60,9 @@
#define USE_STATE2STRING 0
+static AtomicInt anonCount;
+static AtomicInt anonNSCount;
+
struct scannerYY_state
{
OutlineParserInterface *thisParser;
@@ -105,8 +108,6 @@ struct scannerYY_state
int yyBegLineNr = 1 ;
int yyColNr = 1 ;
int yyBegColNr = 1 ;
- int anonCount = 0 ;
- int anonNSCount = 0 ;
QCString yyFileName;
MethodTypes mtype = Method;
bool stat = false;
@@ -3784,7 +3785,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
BEGIN(MemberSpecSkip);
}
<TypedefName>";" { /* typedef of anonymous type */
- yyextra->current->name.sprintf("@%d",yyextra->anonCount++);
+ yyextra->current->name.sprintf("@%d",anonCount++);
if ((yyextra->current->section == Entry::ENUM_SEC) || (yyextra->current->spec&Entry::Enum))
{
yyextra->current->program+=','; // add field terminator
@@ -3859,7 +3860,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
{
// anonymous compound yyextra->inside -> insert dummy variable name
//printf("Adding anonymous variable for scope %s\n",p->name.data());
- yyextra->msName.sprintf("@%d",yyextra->anonCount++);
+ yyextra->msName.sprintf("@%d",anonCount++);
break;
}
}
@@ -5644,12 +5645,12 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
}
else // use invisible name
{
- yyextra->current->name.sprintf("@%d",yyextra->anonNSCount);
+ yyextra->current->name.sprintf("@%d",anonNSCount.load());
}
}
else
{
- yyextra->current->name.sprintf("@%d",yyextra->anonCount++);
+ yyextra->current->name.sprintf("@%d",anonCount++);
}
}
yyextra->curlyCount=0;
@@ -7247,7 +7248,6 @@ static void parseMain(yyscan_t yyscanner,
yyextra->column = 0;
scannerYYrestart(0,yyscanner);
- //yyextra->anonCount = 0; // don't reset per file
//depthIf = 0;
yyextra->protection = Public;
yyextra->mtype = Method;
@@ -7301,7 +7301,7 @@ static void parseMain(yyscan_t yyscanner,
parseCompounds(yyscanner,rt);
- yyextra->anonNSCount++;
+ anonNSCount++;
// add additional entries that were created during processing
for (auto &kv: yyextra->outerScopeEntries)
--
2.26.2

View File

@ -1,41 +0,0 @@
commit d067baf495d0415283ce724ad32cb9a08dc17c83
Author: Dimitri van Heesch <doxygen@gmail.com>
Date: Thu Sep 17 20:14:39 2020 +0200
issue #8034: doxygen crashes
diff --git a/src/definition.cpp b/src/definition.cpp
index 7874a5e4..dc968399 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -176,14 +176,14 @@ static bool matchExcludedSymbols(const char *name)
QRegExp re(substitute(pattern,"*",".*"),TRUE);
int pl;
int i = re.match(symName,0,&pl);
- //printf(" %d = re.match(%s) pattern=%s\n",i,symName.data(),pattern.data());
+ //printf(" %d = re.match(%s) pattern=%s pl=%d len=%d\n",i,symName.data(),pattern.data(),pl,symName.length());
if (i!=-1) // wildcard match
{
uint ui=(uint)i;
uint sl=symName.length();
// check if it is a whole word match
- if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) &&
- (ui+pl==sl || pattern.at(ui+pl)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd))
+ if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) &&
+ (ui+pl==sl || pattern.at(pattern.length()-1)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd))
)
{
//printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i);
diff --git a/src/util.cpp b/src/util.cpp
index 0581b5fa..34df8d7b 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -5714,7 +5714,7 @@ QCString normalizeNonTemplateArgumentsInString(
result += name.mid(p,i-p);
QCString n = name.mid(i,l);
bool found=FALSE;
- for (const Argument formArg : formalArgs)
+ for (const Argument &formArg : formalArgs)
{
if (formArg.name == n)
{

View File

@ -1,117 +0,0 @@
commit dfc82af001c56254c6fde0affd009f80e19b1548
Author: Dimitri van Heesch <doxygen@gmail.com>
Date: Mon Sep 21 12:20:57 2020 +0200
issue #8037: Links using @ref stopped working in doxygen 1.8.19
diff --git a/src/classdef.cpp b/src/classdef.cpp
index c3cd3ee2..5e2b2fa1 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -1248,6 +1248,7 @@ void ClassDefImpl::distributeMemberGroupDocumentation()
void ClassDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
if (m_impl->memberGroupSDict)
{
diff --git a/src/commentscan.l b/src/commentscan.l
index c151294d..ce495a1c 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -666,6 +666,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$"
optList = QCStringList::split(',',optStr);
}
auto it = docCmdMap.find(cmdName.data());
+ //printf("lookup command '%s' found=%d\n",cmdName.data(),it!=docCmdMap.end());
if (it!=docCmdMap.end()) // special action is required
{
int i=0;
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 73131f67..b79f8c82 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -2448,8 +2448,8 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) :
}
m_isSubPage = pd && pd->hasParentPage();
if (sec->type()!=SectionType::Page || m_isSubPage) m_anchor = sec->label();
- //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n",
- // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type);
+ //printf("m_text=%s,m_ref=%s,m_file=%s,type=%d\n",
+ // m_text.data(),m_ref.data(),m_file.data(),m_refType);
return;
}
else if (resolveLink(context,target,TRUE,&compound,anchor))
diff --git a/src/filedef.cpp b/src/filedef.cpp
index f07201d4..b74fda9b 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -311,6 +311,7 @@ void FileDefImpl::distributeMemberGroupDocumentation()
void FileDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
if (m_memberGroupSDict)
{
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 9b333567..7cd6cf26 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -228,6 +228,7 @@ void GroupDefImpl::distributeMemberGroupDocumentation()
void GroupDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
MemberGroupSDict::Iterator mgli(*m_memberGroupSDict);
MemberGroup *mg;
diff --git a/src/markdown.cpp b/src/markdown.cpp
index 3089b8e7..2e6ab3ea 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -2662,6 +2662,7 @@ QCString markdownFileNameToId(const QCString &fileName)
int i = baseFn.findRev('.');
if (i!=-1) baseFn = baseFn.left(i);
QCString baseName = substitute(substitute(substitute(baseFn," ","_"),"/","_"),":","_");
+ //printf("markdownFileNameToId(%s)=md_%s\n",qPrint(fileName),qPrint(baseName));
return "md_"+baseName;
}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 6d179c21..2f92ea01 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -4838,6 +4838,7 @@ ClassDef *MemberDefImpl::accessorClass() const
void MemberDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
}
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 88eea5d2..65456ac0 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -349,6 +349,7 @@ void NamespaceDefImpl::distributeMemberGroupDocumentation()
void NamespaceDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 09152def..75e50ed1 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -99,6 +99,7 @@ PageDefImpl::~PageDefImpl()
void PageDefImpl::findSectionsInDocumentation()
{
+ docFindSections(briefDescription(),this,docFile());
docFindSections(documentation(),this,docFile());
}

View File

@ -1,56 +0,0 @@
commit 6383a72200df27b0515b6e3d09bfad8934eb5c76
Author: albert-github <albert.tests@gmail.com>
Date: Tue Sep 8 13:31:15 2020 +0200
Make testsqlite3.py python script running with python 3
The testsqlite3.py didn't run under python 3 (found by means of pylint).
Making it runnable under python 2 and python 3.
diff --git a/testing/testsqlite3.py b/testing/testsqlite3.py
index b4227b44..1d94f701 100755
--- a/testing/testsqlite3.py
+++ b/testing/testsqlite3.py
@@ -13,7 +13,7 @@ g_conn=None
val=[]
def print_unprocessed_attributes(node):
for key in node.attrib:
- print "WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key)
+ print("WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key))
def extract_attribute(node,attribute,pnl):
if not attribute in node.attrib:
@@ -69,7 +69,7 @@ def process_memberdef(node):
extract_element(node,chld,q)
for chld in node.getchildren():
- print "WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag)
+ print("WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag))
extract_attribute(node,"kind",q)
extract_attribute(node,"prot",q)
@@ -90,12 +90,12 @@ def process_memberdef(node):
r=[]
try:
r = g_conn.execute(query,val).fetchall()
- except sqlite3.OperationalError,e:
- print "SQL_ERROR:%s"%e
+ except(sqlite3.OperationalError,e):
+ print("SQL_ERROR:%s"%e)
del val[:]
if not len(r) > 0:
- print "TEST_ERROR: Member not found in SQL DB"
+ print("TEST_ERROR: Member not found in SQL DB")
def load_xml(name):
@@ -104,7 +104,7 @@ def load_xml(name):
for event, elem in context:
if event == "end" and elem.tag == "memberdef":
process_memberdef(elem)
- print "\n== Unprocessed XML =="
+ print("\n== Unprocessed XML ==")
# ET.dump(root)

View File

@ -1,25 +0,0 @@
From 1fda77f54a2eacba32658001329bd9084f4df1e7 Mon Sep 17 00:00:00 2001
From: Dimitri van Heesch <doxygen@gmail.com>
Date: Fri, 11 Sep 2020 15:38:01 +0200
Subject: [PATCH] issue #8022: Different results on 64 and 32 bit
---
src/doxygen.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index b218d382..0832e5c6 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -164,7 +164,7 @@ DefinesPerFileList Doxygen::macroDefinitions;
bool Doxygen::clangAssistedParsing = FALSE;
// locally accessible globals
-static std::unordered_map< std::string, const Entry* > g_classEntries;
+static std::map< std::string, const Entry* > g_classEntries;
static StringVector g_inputFiles;
static QDict<void> g_compoundKeywordDict(7); // keywords recognised as compounds
static OutputList *g_outputList = 0; // list of output generating objects
--
2.26.2

View File

@ -15,8 +15,8 @@
Summary: A documentation system for C/C++
Name: doxygen
Epoch: 1
Version: 1.8.20
Release: 6%{?dist}
Version: 1.9.1
Release: 1%{?dist}
# No version is specified.
License: GPL+
@ -27,14 +27,6 @@ Source1: doxywizard.desktop
# these icons are part of doxygen and converted from doxywizard.ico
Source2: doxywizard-icons.tar.xz
# upstream patches
Patch0: doxygen-1.8.20-enums-multiple-files.patch
Patch1: doxygen-different-results-on-64-and-32-bit.patch
Patch2: doxygen-1.8.20-glibc-assert.patch
Patch3: doxygen-1.8.20-broken-ref-for-enum-entry.patch
Patch4: doxygen-1.8.20-links-using-ref-stopp-working.patch
Patch5: doxygen-1.8.20-python3.patch
Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch
Patch7: doxygen-1.8.20-attribute-target-redefined-in-svg.patch
BuildRequires: %{_bindir}/python3
BuildRequires: gcc-c++ gcc
@ -308,6 +300,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
%endif
%changelog
* Mon Jan 11 2021 Than Ngo <than@redhat.com> - 1.9.1-1
- update to 1.9.1
* Mon Jan 11 2021 Than Ngo <than@redhat.com> - 1.8.20-6
- drop BR on ImageMagick in RHEL

View File

@ -1,2 +1,2 @@
SHA512 (doxygen-1.8.20.src.tar.gz) = 15dc95850440aed2a56971d8c04bf3bdfac861bcc38c60c7be22fd3b922b9fe2a750ea8877cb0716832bb6ad7901afcdf4950ba985b09890027030bdf828eee3
SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad
SHA512 (doxygen-1.9.1.src.tar.gz) = a84fbea1874921317b58345c53fc4eac0382c9e593f0e1ee899a31e67ead3fd12b2da8145b37e2e09d665e28d060e6717c92de7e8d0a31fc5f24fdcc4715f54d