summaryrefslogtreecommitdiffstats
path: root/source/d/doxygen/patches
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/doxygen/patches')
-rw-r--r--source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch22
-rw-r--r--source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch64
-rw-r--r--source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch49
-rw-r--r--source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch12
4 files changed, 147 insertions, 0 deletions
diff --git a/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch
new file mode 100644
index 000000000..38465ffb8
--- /dev/null
+++ b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch
@@ -0,0 +1,22 @@
+diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l
+--- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100
++++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100
+@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String
+ for (const auto &s : sl)
+ {
+ QCString result = s.c_str();
+- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE.
+- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1);
++ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1);
+ // here we strip the quote again
+ substEnvVarsInString(result);
+
+@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String
+ }
+ if (p!=l) // add the leftover as a string
+ {
+- results.push_back(result.right(l-p).data());
++ results.push_back(result.right(l-p).str());
+ }
+ }
+ else // just goto the next element in the list
diff --git a/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch
new file mode 100644
index 000000000..848750d64
--- /dev/null
+++ b/source/d/doxygen/patches/doxgen-1.9.1-crash-when-parsing-config-file.patch
@@ -0,0 +1,64 @@
+commit 3b15963316b59cd1af3468a43535d90343916ffb
+Author: Dimitri van Heesch <doxygen@gmail.com>
+Date: Mon Jan 18 19:59:16 2021 +0100
+
+ issue #8343: doxygen-1.9.1 crashes when parsing config file
+
+diff --git a/src/configimpl.l b/src/configimpl.l
+index 7f73ec01..56a2e108 100644
+--- a/src/configimpl.l
++++ b/src/configimpl.l
+@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl)
+ c=result.at(i);
+ if (c=='"') // end quote
+ {
+- results.push_back(result.mid(p,i-p).data());
++ results.push_back(result.mid(p,i-p).str());
+ p=i+1;
+ break;
+ }
+@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl)
+ }
+ else if (c==' ' || c=='\t') // separator
+ {
+- if (i>p) results.push_back(result.mid(p,i-p).data());
++ if (i>p) results.push_back(result.mid(p,i-p).str());
+ p=i+1;
+ }
+ }
+@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl)
+ }
+ else // just goto the next element in the list
+ {
+- if (!result.isEmpty()) results.push_back(result.data());
++ if (!result.isEmpty()) results.push_back(result.str());
+ }
+ }
+ sl = results;
+@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str)
+ QFileInfo fi(path.c_str());
+ if (fi.exists() && fi.isDir())
+ {
+- path = fi.absFilePath().utf8().data();
++ path = fi.absFilePath().utf8().str();
+ if (path[path.size()-1]!='/') path+='/';
+ }
+ }
+@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect()
+ QString p = QDir::currentDirPath();
+ if (p.at(p.length()-1)!='/')
+ p.append('/');
+- stripFromPath.push_back(p.utf8().data());
++ stripFromPath.push_back(p.utf8().str());
+ }
+ else
+ {
+@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect()
+ if (inputSources.empty())
+ {
+ // use current dir as the default
+- inputSources.push_back(QDir::currentDirPath().utf8().data());
++ inputSources.push_back(QDir::currentDirPath().utf8().str());
+ }
+ else
+ {
diff --git a/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch b/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch
new file mode 100644
index 000000000..a1848e623
--- /dev/null
+++ b/source/d/doxygen/patches/doxygen-1.9.1-Coverity_issues.patch
@@ -0,0 +1,49 @@
+diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp
+--- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100
++++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100
+@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De
+ s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor);
+ init=TRUE;
+ }
+- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); }
++ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); }
+
+ Cachable &cache = getCache();
+ cache.propertyAttrs.reset(TemplateList::alloc());
+- if (md && md->isProperty())
++ if (md->isProperty())
+ {
+ if (md->isGettable()) cache.propertyAttrs->append("get");
+ if (md->isPrivateGettable()) cache.propertyAttrs->append("private get");
+@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De
+ if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set");
+ }
+ cache.eventAttrs.reset(TemplateList::alloc());
+- if (md && md->isEvent())
++ if (md->isEvent())
+ {
+ if (md->isAddable()) cache.eventAttrs->append("add");
+ if (md->isRemovable()) cache.eventAttrs->append("remove");
+diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp
+--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100
++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100
+@@ -1524,7 +1524,7 @@ reparsetoken:
+ {
+ QCString scope;
+ doctokenizerYYsetStateSetScope();
+- doctokenizerYYlex();
++ (void)doctokenizerYYlex();
+ scope = g_token->name;
+ g_context = scope;
+ //printf("Found scope='%s'\n",scope.data());
+diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp
+--- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100
++++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100
+@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write(
+ {
+ if (first) first=FALSE; else t << "\\n";
+ t << DotNode::convertLabel(link->label);
++ count++;
+ }
+ if (count==maxLabels) t << "\\n...";
+ t << "\"";
diff --git a/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch b/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch
new file mode 100644
index 000000000..adcd1440b
--- /dev/null
+++ b/source/d/doxygen/patches/doxygen-1.9.1-crash_in_docparser.patch
@@ -0,0 +1,12 @@
+diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp
+--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100
++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100
+@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D
+ children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE));
+ g_initialStyleStack.push(sc);
+ g_styleStack.pop();
+- sc = g_styleStack.top();
++ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0;
+ }
+ }
+ }