From 3eebc8a9f18a041268c4b7ddf77dedbaeed0b6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 10 Jan 2014 16:51:58 +0100 Subject: [PATCH] test1 --- lib/valueflow.cpp | 14 +++++++------- test/testvalueflow.cpp | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 8ca5adebf..20d44487c 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -103,7 +103,7 @@ static void valueFlowBeforeCondition(TokenList *tokenlist, ErrorLogger *errorLog } break; } - + if (tok2->varId() == varid) { // bailout: assignment if (Token::Match(tok2->previous(), "!!* %var% =")) { @@ -138,12 +138,12 @@ static void valueFlowBeforeCondition(TokenList *tokenlist, ErrorLogger *errorLog tok2 = tok2->link(); } } else if (var->isGlobal() && tok2->str() == "{") { - if (!Token::Match(tok2->previous(), ")|else {")) - break; - if (Token::Match(tok2->previous(), ") {") && - !Token::Match(tok2->linkAt(-1)->previous(), "if|for|while (")) - break; - } + if (!Token::Match(tok2->previous(), ")|else {")) + break; + if (Token::Match(tok2->previous(), ") {") && + !Token::Match(tok2->linkAt(-1)->previous(), "if|for|while (")) + break; + } } } } diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index 113223af3..39b86b660 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -154,10 +154,20 @@ private: } void valueFlowForLoop() { - const char code[] = "void f() {\n" - " for (int x = 0; x < 10; x++)\n" - " a[x] = 0;\n" - "}"; + const char *code; + + code = "void f() {\n" + " for (int x = 0; x < 10; x++)\n" + " a[x] = 0;\n" + "}"; + ASSERT_EQUALS(true, testValueOfX(code, 3U, 0)); + ASSERT_EQUALS(true, testValueOfX(code, 3U, 9)); + ASSERT_EQUALS(false, testValueOfX(code, 3U, 10)); + + code = "void f() {\n" + " for (int x = 0; x < (short)10; x++)\n" + " a[x] = 0;\n" + "}"; ASSERT_EQUALS(true, testValueOfX(code, 3U, 0)); ASSERT_EQUALS(true, testValueOfX(code, 3U, 9)); ASSERT_EQUALS(false, testValueOfX(code, 3U, 10));