Fixed #4226 (False positive: Uninitialized variable (problem with namespace ::rtl))
This commit is contained in:
parent
9e147c4a0a
commit
562291477d
|
@ -4955,6 +4955,11 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
|
||||||
Token *tok2 = type0;
|
Token *tok2 = type0;
|
||||||
unsigned int typelen = 1;
|
unsigned int typelen = 1;
|
||||||
|
|
||||||
|
if (tok2->str() == "::") {
|
||||||
|
tok2 = tok2->next();
|
||||||
|
typelen++;
|
||||||
|
}
|
||||||
|
|
||||||
//check if variable is declared 'const' or 'static' or both
|
//check if variable is declared 'const' or 'static' or both
|
||||||
while (tok2) {
|
while (tok2) {
|
||||||
if (!Token::Match(tok2, "const|static") && Token::Match(tok2, "%type% const|static")) {
|
if (!Token::Match(tok2, "const|static") && Token::Match(tok2, "%type% const|static")) {
|
||||||
|
|
|
@ -5197,14 +5197,24 @@ private:
|
||||||
"}", tokenizeAndStringify(code));
|
"}", tokenizeAndStringify(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
void vardecl21() { // #4042
|
void vardecl21() { // type in namespace
|
||||||
const char code[] = "void f() {\n"
|
// #4042 - a::b const *p = 0;
|
||||||
" a::b const *p = 0;\n"
|
const char code1[] = "void f() {\n"
|
||||||
"}\n";
|
" a::b const *p = 0;\n"
|
||||||
|
"}\n";
|
||||||
ASSERT_EQUALS("void f ( ) {\n"
|
ASSERT_EQUALS("void f ( ) {\n"
|
||||||
"a :: b const * p ; p = 0 ;\n"
|
"a :: b const * p ; p = 0 ;\n"
|
||||||
"}"
|
"}"
|
||||||
, tokenizeAndStringify(code));
|
, tokenizeAndStringify(code1));
|
||||||
|
|
||||||
|
// #4226 - ::a::b const *p = 0;
|
||||||
|
const char code2[] = "void f() {\n"
|
||||||
|
" ::a::b const *p = 0;\n"
|
||||||
|
"}\n";
|
||||||
|
ASSERT_EQUALS("void f ( ) {\n"
|
||||||
|
":: a :: b const * p ; p = 0 ;\n"
|
||||||
|
"}"
|
||||||
|
, tokenizeAndStringify(code2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void vardecl22() { // #4211 - segmentation fault
|
void vardecl22() { // #4211 - segmentation fault
|
||||||
|
|
Loading…
Reference in New Issue