From eff7c65d11435e2246e963fac8a3c87c38f00210 Mon Sep 17 00:00:00 2001 From: albert-github Date: Tue, 11 May 2021 15:15:34 +0200 Subject: issue #8542 Variadic macro expansion The variadic macro was not handled in case there were fixed arguments as well. --- src/pre.l | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pre.l b/src/pre.l index 7b48ca7..54627ce 100644 --- a/src/pre.l +++ b/src/pre.l @@ -3241,10 +3241,17 @@ static void initPredefined(yyscan_t yyscanner,const QCString &fileName) ) // predefined function macro definition { static const reg::Ex reId(R"(\a\w*)"); + static const reg::Ex reVaArgs(R"(, *\.\.\. *$)"); reg::Iterator end; bool varArgs = false; int count = 0; std::map argMap; + reg::Iterator it1(ds.substr(i_obrace+1,i_cbrace-i_obrace-1),reVaArgs,0); + if (it1 != end) + { + i_cbrace -= it1->length(); + + } if (ds.substr(i_obrace+1,i_cbrace-i_obrace-1)=="...") { varArgs = true; @@ -3274,6 +3281,12 @@ static void initPredefined(yyscan_t yyscanner,const QCString &fileName) } ++it; } + if (it1!=end) + { + varArgs = true; + argMap.emplace("__VA_ARGS__",count); + count++; + } } // strip definition part std::string definition; -- cgit v0.12