Fixed #9875 (Crash)
This commit is contained in:
parent
30d3643bb8
commit
1daf1ec108
|
@ -1412,9 +1412,15 @@ void CheckOther::checkConstVariable()
|
||||||
bool castToNonConst = false;
|
bool castToNonConst = false;
|
||||||
for (const Token* tok = var->nameToken(); tok != scope->bodyEnd && tok != nullptr; tok = tok->next()) {
|
for (const Token* tok = var->nameToken(); tok != scope->bodyEnd && tok != nullptr; tok = tok->next()) {
|
||||||
if (tok->isCast()) {
|
if (tok->isCast()) {
|
||||||
|
if (!tok->valueType()) {
|
||||||
|
castToNonConst = true; // safe guess
|
||||||
|
break;
|
||||||
|
}
|
||||||
bool isConst = 0 != (tok->valueType()->constness & (1 << tok->valueType()->pointer));
|
bool isConst = 0 != (tok->valueType()->constness & (1 << tok->valueType()->pointer));
|
||||||
if (!isConst)
|
if (!isConst) {
|
||||||
castToNonConst = true;
|
castToNonConst = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (castToNonConst)
|
if (castToNonConst)
|
||||||
|
|
|
@ -2232,6 +2232,13 @@ private:
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("struct C { void f() const; };\n" // #9875 - crash
|
||||||
|
"\n"
|
||||||
|
"void foo(C& x) {\n"
|
||||||
|
" x.f();\n"
|
||||||
|
" foo( static_cast<U2>(0) );\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
check("class a {\n"
|
check("class a {\n"
|
||||||
" void foo(const int& i) const;\n"
|
" void foo(const int& i) const;\n"
|
||||||
|
|
Loading…
Reference in New Issue