Kaydet (Commit) 1dc43e24 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Generalize vector/deque ctor checks to work with MSVCRT

Change-Id: I2d493a36b8c2e3abe69964c04b46f08d67ef8a48
üst 4a591d74
...@@ -178,12 +178,13 @@ bool BadVectorInit::VisitCXXConstructExpr(const CXXConstructExpr* expr) ...@@ -178,12 +178,13 @@ bool BadVectorInit::VisitCXXConstructExpr(const CXXConstructExpr* expr)
if (aParentName.find("vector") == string::npos && aParentName.find("deque") == string::npos) if (aParentName.find("vector") == string::npos && aParentName.find("deque") == string::npos)
return true; return true;
// ignore the copy constructor // ignore the copy/move constructors, and those taking an initializer_list
// etc.:
if (consDecl->isCopyConstructor() || consDecl->isMoveConstructor())
return true;
const ParmVarDecl* pParam = consDecl->getParamDecl(0); const ParmVarDecl* pParam = consDecl->getParamDecl(0);
std::string aParam1 = pParam->getOriginalType().getAsString(); std::string aParam1 = pParam->getOriginalType().getAsString();
if (aParam1.find("vector") != string::npos if (aParam1.find("initializer_list") != string::npos
|| aParam1.find("deque") != string::npos
|| aParam1.find("initializer_list") != string::npos
|| aParam1.find("iterator") != string::npos) || aParam1.find("iterator") != string::npos)
return true; return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment