Bailout in Token::getValueTokenDeadPointer() if reference is used (#6399)
This commit is contained in:
parent
0d151b45b5
commit
b69528eb80
|
@ -1416,7 +1416,7 @@ const Token *Token::getValueTokenDeadPointer() const
|
|||
if (!vartok || !vartok->isName() || !vartok->variable())
|
||||
continue;
|
||||
const Variable * const var = vartok->variable();
|
||||
if (var->isStatic())
|
||||
if (var->isStatic() || var->isReference())
|
||||
continue;
|
||||
// variable must be in same function (not in subfunction)
|
||||
if (functionscope != getfunctionscope(var->scope()))
|
||||
|
|
|
@ -3944,6 +3944,29 @@ private:
|
|||
" f(tmp);\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
// Don't warn about references (#6399)
|
||||
checkDeadPointer("void f() {\n"
|
||||
" wxAuiToolBarItem* former_hover = NULL;\n"
|
||||
" for (i = 0, count = m_items.GetCount(); i < count; ++i) {\n"
|
||||
" wxAuiToolBarItem& item = m_items.Item(i);\n"
|
||||
" former_hover = &item;\n"
|
||||
" }\n"
|
||||
" if (former_hover != pitem)\n"
|
||||
" dosth();\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
checkDeadPointer("void f() {\n"
|
||||
" wxAuiToolBarItem* former_hover = NULL;\n"
|
||||
" for (i = 0, count = m_items.GetCount(); i < count; ++i) {\n"
|
||||
" wxAuiToolBarItem item = m_items.Item(i);\n"
|
||||
" former_hover = &item;\n"
|
||||
" }\n"
|
||||
" if (former_hover != pitem)\n"
|
||||
" dosth();\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("[test.cpp:7]: (error) Dead pointer usage. Pointer 'former_hover' is dead if it has been assigned '&item' at line 5.\n", errout.str());
|
||||
}
|
||||
|
||||
void uninitvar_posix_types() {
|
||||
|
|
Loading…
Reference in New Issue