diff --git a/lib/checkbufferoverrun.cpp b/lib/checkbufferoverrun.cpp index c0c5ddb64c83..9bc7f449e76f 100644 --- a/lib/checkbufferoverrun.cpp +++ b/lib/checkbufferoverrun.cpp @@ -884,7 +884,13 @@ void CheckBufferOverrun::argumentSizeError(const Token *tok, const std::string & // CTU.. //--------------------------------------------------------------------------- -namespace { +// a Clang-built executable will crash when using the anonymous MyFileInfo later on - so put it in a unique namespace for now +// see https://trac.cppcheck.net/ticket/12108 for more details +namespace +#ifdef __clang__ +CheckBufferOverrun_internal +#endif +{ /** data for multifile checking */ class MyFileInfo : public Check::FileInfo { public: @@ -907,6 +913,10 @@ namespace { }; } +#ifdef __clang__ +using CheckBufferOverrun_internal::MyFileInfo; +#endif + bool CheckBufferOverrun::isCtuUnsafeBufferUsage(const Settings *settings, const Token *argtok, MathLib::bigint *offset, int type) { if (!offset) diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index 245455ad4cab..8e1976dd9464 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -3402,7 +3402,13 @@ void CheckClass::unsafeClassRefMemberError(const Token *tok, const std::string & CWE(0), Certainty::normal); } -namespace { +// a Clang-built executable will crash when using the anonymous MyFileInfo later on - so put it in a unique namespace for now +// see https://trac.cppcheck.net/ticket/12108 for more details +namespace +#ifdef __clang__ +CheckClass_internal +#endif +{ /* multifile checking; one definition rule violations */ class MyFileInfo : public Check::FileInfo { public: @@ -3438,6 +3444,10 @@ namespace { }; } +#ifdef __clang__ +using CheckClass_internal::MyFileInfo; +#endif + Check::FileInfo *CheckClass::getFileInfo(const Tokenizer *tokenizer, const Settings *settings) const { if (!tokenizer->isCPP()) diff --git a/lib/checknullpointer.cpp b/lib/checknullpointer.cpp index cf70f7293eb3..6a1613420060 100644 --- a/lib/checknullpointer.cpp +++ b/lib/checknullpointer.cpp @@ -558,7 +558,13 @@ static bool isUnsafeUsage(const Settings *settings, const Token *vartok, MathLib return CheckNullPointer::isPointerDeRef(vartok, unknown, settings); } -namespace { +// a Clang-built executable will crash when using the anonymous MyFileInfo later on - so put it in a unique namespace for now +// see https://trac.cppcheck.net/ticket/12108 for more details +namespace +#ifdef __clang__ +CheckNullPointer_internal +#endif +{ /* data for multifile checking */ class MyFileInfo : public Check::FileInfo { public: @@ -573,6 +579,9 @@ namespace { }; } +#ifdef __clang__ +using CheckNullPointer_internal::MyFileInfo; +#endif Check::FileInfo *CheckNullPointer::getFileInfo(const Tokenizer *tokenizer, const Settings *settings) const { diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 94d64d275378..9ca0b46338db 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1682,7 +1682,13 @@ static bool isVariableUsage(const Settings *settings, const Token *vartok, MathL return CheckUninitVar::isVariableUsage(vartok, settings->library, true, CheckUninitVar::Alloc::ARRAY); } -namespace { +// a Clang-built executable will crash when using the anonymous MyFileInfo later on - so put it in a unique namespace for now +// see https://trac.cppcheck.net/ticket/12108 for more details +namespace +#ifdef __clang__ +CheckUninitVar_internal +#endif +{ /* data for multifile checking */ class MyFileInfo : public Check::FileInfo { public: @@ -1697,6 +1703,10 @@ namespace { }; } +#ifdef __clang__ +using CheckUninitVar_internal::MyFileInfo; +#endif + Check::FileInfo *CheckUninitVar::getFileInfo(const Tokenizer *tokenizer, const Settings *settings) const { const std::list &unsafeUsage = CTU::getUnsafeUsage(tokenizer, settings, ::isVariableUsage);