Fixed another crash in clang test suite and let two times two functions in std.cfg share same configuration
This commit is contained in:
parent
4e578af603
commit
25749ab19f
31
cfg/std.cfg
31
cfg/std.cfg
|
@ -3891,20 +3891,8 @@
|
||||||
</arg>
|
</arg>
|
||||||
</function>
|
</function>
|
||||||
<!-- size_t c16rtomb ( char * pmb, char16_t c16, mbstate_t * ps ); -->
|
<!-- size_t c16rtomb ( char * pmb, char16_t c16, mbstate_t * ps ); -->
|
||||||
<function name="c16rtomb">
|
|
||||||
<noreturn>false</noreturn>
|
|
||||||
<leak-ignore/>
|
|
||||||
<arg nr="1"/>
|
|
||||||
<arg nr="2">
|
|
||||||
<not-uninit/>
|
|
||||||
</arg>
|
|
||||||
<arg nr="3">
|
|
||||||
<not-null/>
|
|
||||||
<not-uninit/>
|
|
||||||
</arg>
|
|
||||||
</function>
|
|
||||||
<!-- size_t c32rtomb ( char * pmb, char32_t c32, mbstate_t * ps ); -->
|
<!-- size_t c32rtomb ( char * pmb, char32_t c32, mbstate_t * ps ); -->
|
||||||
<function name="c32rtomb">
|
<function name="c16rtomb,c32rtomb">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<leak-ignore/>
|
<leak-ignore/>
|
||||||
<arg nr="1"/>
|
<arg nr="1"/>
|
||||||
|
@ -3917,23 +3905,8 @@
|
||||||
</arg>
|
</arg>
|
||||||
</function>
|
</function>
|
||||||
<!-- size_t mbrtoc16 ( char16_t * pc16, const char * pmb, size_t max, mbstate_t * ps); -->
|
<!-- size_t mbrtoc16 ( char16_t * pc16, const char * pmb, size_t max, mbstate_t * ps); -->
|
||||||
<function name="mbrtoc16">
|
|
||||||
<noreturn>false</noreturn>
|
|
||||||
<leak-ignore/>
|
|
||||||
<arg nr="1"/>
|
|
||||||
<arg nr="2">
|
|
||||||
<not-uninit/>
|
|
||||||
</arg>
|
|
||||||
<arg nr="3">
|
|
||||||
<not-uninit/>
|
|
||||||
</arg>
|
|
||||||
<arg nr="4">
|
|
||||||
<not-null/>
|
|
||||||
<not-uninit/>
|
|
||||||
</arg>
|
|
||||||
</function>
|
|
||||||
<!-- size_t mbrtoc32 ( char32_t * pc32, const char * pmb, size_t max, mbstate_t * ps); -->
|
<!-- size_t mbrtoc32 ( char32_t * pc32, const char * pmb, size_t max, mbstate_t * ps); -->
|
||||||
<function name="mbrtoc32">
|
<function name="mbrtoc16,mbrtoc32">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<leak-ignore/>
|
<leak-ignore/>
|
||||||
<arg nr="1"/>
|
<arg nr="1"/>
|
||||||
|
|
|
@ -450,21 +450,19 @@ void CheckStl::pushback()
|
||||||
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
|
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
|
||||||
if (Token::Match(tok, "%var% = & %var% [")) {
|
if (Token::Match(tok, "%var% = & %var% [")) {
|
||||||
// Skip it directly if it is a pointer or an array
|
// Skip it directly if it is a pointer or an array
|
||||||
if (tok->tokAt(3)->variable()->isArrayOrPointer())
|
const Token* containerTok = tok->tokAt(3);
|
||||||
|
if (containerTok->variable() && containerTok->variable()->isArrayOrPointer())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Variable id for pointer
|
// Variable id for pointer
|
||||||
const unsigned int pointerId(tok->varId());
|
const unsigned int pointerId(tok->varId());
|
||||||
|
|
||||||
// Variable id for the container variable
|
|
||||||
const unsigned int containerId(tok->tokAt(3)->varId());
|
|
||||||
|
|
||||||
bool invalidPointer = false;
|
bool invalidPointer = false;
|
||||||
const Token* function = nullptr;
|
const Token* function = nullptr;
|
||||||
const Token* end2 = tok->scope()->classEnd;
|
const Token* end2 = tok->scope()->classEnd;
|
||||||
for (const Token *tok2 = tok; tok2 != end2; tok2 = tok2->next()) {
|
for (const Token *tok2 = tok; tok2 != end2; tok2 = tok2->next()) {
|
||||||
// push_back on vector..
|
// push_back on vector..
|
||||||
if (Token::Match(tok2, "%varid% . push_front|push_back|insert|reserve|resize|clear", containerId)) {
|
if (Token::Match(tok2, "%varid% . push_front|push_back|insert|reserve|resize|clear", containerTok->varId())) {
|
||||||
invalidPointer = true;
|
invalidPointer = true;
|
||||||
function = tok2->tokAt(2);
|
function = tok2->tokAt(2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@ private:
|
||||||
TEST_CASE(pushback10);
|
TEST_CASE(pushback10);
|
||||||
TEST_CASE(pushback11);
|
TEST_CASE(pushback11);
|
||||||
TEST_CASE(pushback12);
|
TEST_CASE(pushback12);
|
||||||
|
TEST_CASE(pushback13);
|
||||||
TEST_CASE(insert1);
|
TEST_CASE(insert1);
|
||||||
TEST_CASE(insert2);
|
TEST_CASE(insert2);
|
||||||
|
|
||||||
|
@ -1298,6 +1299,16 @@ private:
|
||||||
"[test.cpp:9]: (error) After insert(), the iterator 'it' may be invalid.\n", errout.str());
|
"[test.cpp:9]: (error) After insert(), the iterator 'it' may be invalid.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pushback13() {
|
||||||
|
check("bool Preprocessor::ConcatenateIncludeName(SmallString<128> &FilenameBuffer, SourceLocation &End) {\n"
|
||||||
|
" unsigned PreAppendSize = FilenameBuffer.size();\n"
|
||||||
|
" FilenameBuffer.resize(PreAppendSize + CurTok.getLength());\n"
|
||||||
|
" const char *BufPtr = &FilenameBuffer[PreAppendSize];\n"
|
||||||
|
" return true;\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void insert1() {
|
void insert1() {
|
||||||
check("void f(std::vector<int> &ints)\n"
|
check("void f(std::vector<int> &ints)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
Loading…
Reference in New Issue