summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-08-28 18:22:46 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-08-28 18:22:46 (GMT)
commit9d9d08582ccea7ef90000acebfd09f8c8acc577a (patch)
tree0ac438aeab89696ae39a29094bd0d702878ad895
parent63dc5b9b1b3e8fb875304a954e4df934b249034b (diff)
downloadDoxygen-9d9d08582ccea7ef90000acebfd09f8c8acc577a.zip
Doxygen-9d9d08582ccea7ef90000acebfd09f8c8acc577a.tar.gz
Doxygen-9d9d08582ccea7ef90000acebfd09f8c8acc577a.tar.bz2
issue #7979: C++ enums being defined in multiple files after b265433 (multi-thread input processing)
-rw-r--r--src/scanner.l16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/scanner.l b/src/scanner.l
index 7c710fa..70f15d6 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)