diff --git a/lib/checkstl.cpp b/lib/checkstl.cpp index 1248ae524..cf00ce976 100644 --- a/lib/checkstl.cpp +++ b/lib/checkstl.cpp @@ -1150,7 +1150,10 @@ void CheckStl::checkAutoPointer() autoPointerArrayError(tok2->next()); } } - autoPtrVarId.insert(tok2->next()->varId()); + if (tok2->next()->varId()) + { + autoPtrVarId.insert(tok2->next()->varId()); + } break; } tok2 = tok2->next(); diff --git a/test/teststl.cpp b/test/teststl.cpp index ba46c3b3c..09cb55b5a 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -1376,6 +1376,12 @@ private: "}\n"); ASSERT_EQUALS("[test.cpp:6]: (style) Copy 'auto_ptr' pointer to another do not create two equal objects since one has lost its ownership of the pointer.\n", errout.str()); + check("std::auto_ptr function();\n" + "int quit;" + "void f() { quit = true; }\n" + ); + ASSERT_EQUALS("", errout.str()); + // ticket #748 check("void f() \n" "{\n"