From 09be07f2b28e15c59f2720a44ecf68937dbb05d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 25 Jul 2019 17:28:32 +0200 Subject: [PATCH] Fix Function::isSafe --- lib/symboldatabase.cpp | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 5f24db860..577603797 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -2088,30 +2088,20 @@ const Token * Function::constructorMemberInitialization() const bool Function::isSafe(const Settings *settings) const { - if (nestedIn->type == Scope::ScopeType::eGlobal) { - if (token->fileIndex() == 0 && isStatic()) - return settings->safeChecks.internalFunctions; - return settings->safeChecks.externalFunctions; + if (settings->safeChecks.externalFunctions) { + if (nestedIn->type == Scope::ScopeType::eGlobal || nestedIn->type == Scope::ScopeType::eNamespace) + return (token->fileIndex() != 0 || !isStatic()); } - if (nestedIn->type == Scope::ScopeType::eNamespace) { - return token->fileIndex() == 0; + if (settings->safeChecks.internalFunctions) { + if (nestedIn->type == Scope::ScopeType::eGlobal || nestedIn->type == Scope::ScopeType::eNamespace) + return (token->fileIndex() == 0 && isStatic()); + } + + if (settings->safeChecks.classes && access == AccessControl::Public) { + return true; } - switch (access) { - case AccessControl::Local: - case AccessControl::Private: - case AccessControl::Protected: - return settings->safeChecks.internalFunctions; - case AccessControl::Public: - return settings->safeChecks.classes; - case AccessControl::Namespace: - case AccessControl::Global: - return settings->safeChecks.externalFunctions; - case AccessControl::Throw: - case AccessControl::Argument: - return false; - }; return false; }