From a45b8135acf0dc0853789c799792a2f0ba0d69e5ae2af77229d319b0fea7d3be Mon Sep 17 00:00:00 2001 From: Petr Gajdos Date: Fri, 2 Oct 2020 05:19:09 +0000 Subject: [PATCH] Accepting request 839053 from home:StefanBruens:branches:devel:tools - Fix anonymous enums from multiple files being squashed together: Add 0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch OBS-URL: https://build.opensuse.org/request/show/839053 OBS-URL: https://build.opensuse.org/package/show/devel:tools/doxygen?expand=0&rev=154 --- ...nums-being-defined-in-multiple-files.patch | 83 +++++++++++++++++++ doxygen.changes | 6 ++ doxygen.spec | 3 + 3 files changed, 92 insertions(+) create mode 100644 0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch diff --git a/0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch b/0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch new file mode 100644 index 0000000..2dcf6d9 --- /dev/null +++ b/0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch @@ -0,0 +1,83 @@ +From 9d9d08582ccea7ef90000acebfd09f8c8acc577a Mon Sep 17 00:00:00 2001 +From: Dimitri van Heesch +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 7c710fa43..70f15d65c 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); + } + ";" { /* 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) diff --git a/doxygen.changes b/doxygen.changes index c822c2e..3866077 100644 --- a/doxygen.changes +++ b/doxygen.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Oct 2 00:59:49 UTC 2020 - Stefan BrĂ¼ns + +- Fix anonymous enums from multiple files being squashed together: + Add 0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch + ------------------------------------------------------------------- Sun Sep 20 15:49:59 UTC 2020 - Andreas Stieger diff --git a/doxygen.spec b/doxygen.spec index 67d70cc..9329efc 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -35,6 +35,8 @@ Patch1: %{name}-no-lowercase-man-names.patch Patch3: vhdlparser-no-return.patch Patch6: doxygen-llvm-libs.patch Patch10: doxygen-libclang-cpp.patch +# PATCH-FIX-UPSTREAM +Patch11: 0001-issue-7979-C++-enums-being-defined-in-multiple-files.patch BuildRequires: bison BuildRequires: cmake >= 2.8.12 BuildRequires: flex @@ -69,6 +71,7 @@ as well. %patch10 -p1 %endif %endif +%patch11 -p1 %build %cmake \