Fixed #673 (False positive: null pointer dereference when dynamic cast is used)
This commit is contained in:
parent
4c30ab0b88
commit
7f2ca357b0
|
@ -52,6 +52,7 @@ public:
|
|||
checkOther.warningOldStylePointerCast();
|
||||
checkOther.checkUnsignedDivision();
|
||||
checkOther.checkCharVariable();
|
||||
checkOther.nullPointer();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,7 +76,6 @@ public:
|
|||
|
||||
checkOther.strPlusChar();
|
||||
checkOther.invalidFunctionUsage();
|
||||
checkOther.nullPointer();
|
||||
checkOther.checkZeroDivision();
|
||||
}
|
||||
|
||||
|
|
|
@ -499,6 +499,8 @@ bool Tokenizer::tokenize(std::istream &code, const char FileName[])
|
|||
}
|
||||
}
|
||||
|
||||
setVarId();
|
||||
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -519,8 +519,6 @@ private:
|
|||
Tokenizer tokenizer;
|
||||
std::istringstream istr(code);
|
||||
tokenizer.tokenize(istr, "test.cpp");
|
||||
tokenizer.simplifyTokenList();
|
||||
tokenizer.setVarId();
|
||||
|
||||
// Clear the error buffer..
|
||||
errout.str("");
|
||||
|
@ -669,6 +667,15 @@ private:
|
|||
" while (a > 0);\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
// dynamic_cast..
|
||||
checkNullPointer("void foo(ABC *abc)\n"
|
||||
"{\n"
|
||||
" int a = abc->a;\n"
|
||||
" if (!dynamic_cast<DEF *>(abc))\n"
|
||||
" ;\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
// Dereferencing a pointer and then checking if it is null
|
||||
|
|
Loading…
Reference in New Issue