Fixed #8039 (Tokenizer: wrong simplification of string)

This commit is contained in:
Daniel Marjamäki 2017-06-01 22:21:02 +02:00
parent bce0776417
commit b68c8d91ab
3 changed files with 16 additions and 5 deletions

View File

@ -7371,9 +7371,6 @@ bool Tokenizer::IsScopeNoReturn(const Token *endScopeToken, bool *unknown) const
bool Tokenizer::isFunctionParameterPassedByValue(const Token *fpar) const
{
if (isC()) // C does not support references
return true;
// TODO: If symbol database is available, use it.
const Token *ftok;

View File

@ -2361,6 +2361,20 @@ private:
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
}
{
const char code[] = "void f() {\n"
" char a[10];\n"
" strcpy(a, \"hello\");\n"
" strcat(a, \"!\");\n"
"}";
const char expected[] = "void f ( ) {\n"
"char a [ 10 ] ;\n"
"strcpy ( a , \"hello\" ) ;\n"
"strcat ( a , \"!\" ) ;\n"
"}";
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true, true, Settings::Native, "test.c"));
}
{
const char code[] = "void f() {"
" char *s = malloc(10);"

View File

@ -3790,14 +3790,14 @@ private:
ASSERT_THROW(checkUninitVar(code), InternalError);
}
void trac_5970() { // Ticket #5073
void trac_5970() { // Ticket #5970
checkUninitVar("void DES_ede3_ofb64_encrypt() {\n"
" DES_cblock d; \n"
" char *dp; \n"
" dp=(char *)d; \n"
" init(dp); \n"
"}", "test.c");
ASSERT_EQUALS("", errout.str());
TODO_ASSERT_EQUALS("", "[test.c:4]: (error) Uninitialized variable: d\n", errout.str());
}