From 0162f33d3fcc7b575714296dd5a772f87c1269fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 17 Jul 2016 19:19:05 +0200 Subject: [PATCH] CheckSizeof: allow division with sizeof(char) when byte count is expected. --- lib/checksizeof.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/checksizeof.cpp b/lib/checksizeof.cpp index e42950aed..e8b7908c4 100644 --- a/lib/checksizeof.cpp +++ b/lib/checksizeof.cpp @@ -157,10 +157,17 @@ void CheckSizeof::checkSizeofForPointerSize() if (tokFunc && tokSize) { for (const Token* tok2 = tokSize; tok2 != tokFunc->linkAt(1); tok2 = tok2->next()) { - if (tok2->str() == "sizeof") - break; - if (Token::simpleMatch(tok2, "/ sizeof")) + if (Token::simpleMatch(tok2, "/ sizeof")) { + // Allow division with sizeof(char) + if (Token::simpleMatch(tok2->next(), "sizeof (")) { + const Token *sztok = tok2->tokAt(2)->astOperand2(); + const ValueType *vt = ((sztok != nullptr) ? sztok->valueType() : nullptr); + if (vt && vt->type == ValueType::CHAR && vt->pointer == 0) + continue; + } + divideBySizeofError(tok2, tokFunc->str()); + } } }