From b2cec721c04a2345f988bb1a842e392f571b724d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 12 Nov 2009 22:16:24 +0100 Subject: [PATCH] Fixed #951 (Preincremented struct member confused with numeric constant) --- lib/tokenize.cpp | 4 ++-- test/testsimplifytokens.cpp | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index b99f04522..ff6546704 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -3405,7 +3405,7 @@ bool Tokenizer::simplifyKnownVariables() Token::Match(tok2, "%var% = %bool% ;") || Token::Match(tok2, "%var% = %var% ;"))) { - unsigned int varid = tok2->varId(); + const unsigned int varid = tok2->varId(); if (varid == 0) continue; @@ -3522,7 +3522,7 @@ bool Tokenizer::simplifyKnownVariables() ret = true; } - if (Token::Match(tok3->next(), "++|-- %varid%", varid)) + if (Token::Match(tok3->next(), "++|-- %varid% !!.", varid)) { incdec(value, tok3->strAt(1)); tok2->tokAt(2)->str(value); diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index 641c372c7..4f8e9a94a 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -2197,6 +2197,22 @@ private: ASSERT_EQUALS(expected, tok(code)); } + + { + const char code[] = "void foo(Result* ptr)\n" + "{\n" + " Result* obj = ptr;\n" + " ++obj->total;\n" + "}\n"; + + const char expected[] = "void foo ( Result * ptr ) " + "{ " + "Result * obj ; obj = ptr ; " + "++ obj . total ; " + "}"; + + ASSERT_EQUALS(expected, tok(code)); + } }