Fixed crash #6686
This commit is contained in:
parent
4f00189ee1
commit
b946b74e09
|
@ -7306,6 +7306,9 @@ void Tokenizer::simplifyNestedStrcat()
|
||||||
tok2 = tok2->tokAt(2);
|
tok2 = tok2->tokAt(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tok2->strAt(3) != ",")
|
||||||
|
continue;
|
||||||
|
|
||||||
// If we have this code:
|
// If we have this code:
|
||||||
// strcat(strcat(dst, foo), bar);
|
// strcat(strcat(dst, foo), bar);
|
||||||
// We move this part of code before all strcat() calls: strcat(dst, foo)
|
// We move this part of code before all strcat() calls: strcat(dst, foo)
|
||||||
|
@ -7323,7 +7326,6 @@ void Tokenizer::simplifyNestedStrcat()
|
||||||
// Insert semicolon after the moved strcat()
|
// Insert semicolon after the moved strcat()
|
||||||
tok->insertToken(";");
|
tok->insertToken(";");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tokenizer::duplicateEnumError(const Token * tok1, const Token * tok2, const std::string & type) const
|
void Tokenizer::duplicateEnumError(const Token * tok1, const Token * tok2, const std::string & type) const
|
||||||
|
|
|
@ -77,6 +77,7 @@ private:
|
||||||
TEST_CASE(garbageCode36); // #6334
|
TEST_CASE(garbageCode36); // #6334
|
||||||
TEST_CASE(garbageCode37); // #5166
|
TEST_CASE(garbageCode37); // #5166
|
||||||
TEST_CASE(garbageCode38); // #6666
|
TEST_CASE(garbageCode38); // #6666
|
||||||
|
TEST_CASE(garbageCode39); // #6686
|
||||||
|
|
||||||
TEST_CASE(garbageValueFlow);
|
TEST_CASE(garbageValueFlow);
|
||||||
TEST_CASE(garbageSymbolDatabase);
|
TEST_CASE(garbageSymbolDatabase);
|
||||||
|
@ -450,6 +451,10 @@ private:
|
||||||
checkCode("{ f2 { } } void f3 () { delete[] } { }");
|
checkCode("{ f2 { } } void f3 () { delete[] } { }");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void garbageCode39() { // #6686
|
||||||
|
checkCode("({ (); strcat(strcat(() ()) ()) })");
|
||||||
|
}
|
||||||
|
|
||||||
void garbageValueFlow() {
|
void garbageValueFlow() {
|
||||||
// #6089
|
// #6089
|
||||||
const char* code = "{} int foo(struct, x1, struct x2, x3, int, x5, x6, x7)\n"
|
const char* code = "{} int foo(struct, x1, struct x2, x3, int, x5, x6, x7)\n"
|
||||||
|
|
Loading…
Reference in New Issue