diff --git a/lib/checkstl.cpp b/lib/checkstl.cpp
index 5dde8be54..d46cb3a17 100644
--- a/lib/checkstl.cpp
+++ b/lib/checkstl.cpp
@@ -1535,14 +1535,10 @@ void CheckStl::readingEmptyStlContainer()
if (i->type != Scope::eFunction)
continue;
- const Token* restartTok = nullptr;
for (const Token *tok = i->classStart->next(); tok != i->classEnd; tok = tok->next()) {
- if (Token::Match(tok, "for|while")) { // Loops and end of scope clear the sets.
- restartTok = tok->linkAt(1); // Check condition to catch looping over empty containers
- } else if (tok == restartTok || Token::Match(tok, "do|}")) {
+ if (Token::Match(tok, "for|while|do|}")) { // Loops and end of scope clear the sets.
empty_map.clear();
empty_nonmap.clear();
- restartTok = nullptr;
}
if (!tok->varId())
diff --git a/man/manual.docbook b/man/manual.docbook
index 221b2d24a..d866d89f0 100644
--- a/man/manual.docbook
+++ b/man/manual.docbook
@@ -305,7 +305,7 @@ cppcheck -DA --force file.c
<cppcheck version="1.66">
<errors>
<error id="someError" severity="error" msg="short error text"
- verbose="long error text" inconclusive="true">
+ verbose="long error text" inconclusive="true" cwe="312">
<location file="file.c" line="1"/>
</error>
</errors>
@@ -361,6 +361,15 @@ cppcheck -DA --force file.c
inconclusive.
+
+
+ cwe
+
+
+ CWE ID for message. This attribute is only used
+ when the CWE ID for the message is known.
+
+
diff --git a/test/teststl.cpp b/test/teststl.cpp
index 0419252e7..00ae0ceab 100644
--- a/test/teststl.cpp
+++ b/test/teststl.cpp
@@ -2664,13 +2664,6 @@ private:
" std::string strValue2 = CMap[1];\n"
"}\n", true);
ASSERT_EQUALS("[test.cpp:3]: (style, inconclusive) Reading from empty STL container\n", errout.str());
-
- // #4306
- check("void f(std::vector v) {\n"
- " v.clear();\n"
- " for(int i = 0; i < v.size(); i++) { cout << v[i]; }\n"
- "}", true);
- ASSERT_EQUALS("[test.cpp:3]: (style, inconclusive) Reading from empty STL container\n", errout.str());
}
};