Skip to content

Commit 167258a

Browse files
committed
Fix FNs when various types are passed as %tu into printf
1 parent 4fc0a79 commit 167258a

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/checkio.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,10 @@ void CheckIO::checkFormatString(const Token * const tok,
11631163
if (!typesMatch(argInfo.typeToken->originalName(), "size_t"))
11641164
invalidPrintfArgTypeError_uint(tok, numFormat, specifier, &argInfo);
11651165
break;
1166+
case 't':
1167+
if (!typesMatch(argInfo.typeToken->originalName(), "ptrdiff_t"))
1168+
invalidPrintfArgTypeError_uint(tok, numFormat, specifier, &argInfo);
1169+
break;
11661170
case 'I':
11671171
if (specifier.find("I64") != std::string::npos) {
11681172
if (argInfo.typeToken->str() != "long" || !argInfo.typeToken->isLong())

test/testio.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3741,14 +3741,14 @@ class TestIO : public TestFixture {
37413741
TEST_PRINTF_WARN_AKA("%zx", "size_t", "std::intptr_t", "signed long", "signed long long");
37423742
TEST_PRINTF_WARN_AKA("%zx", "size_t", "std::uintptr_t", "unsigned long", "unsigned long long");
37433743

3744-
//TODO TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "bool");
3744+
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "bool");
37453745
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "char");
37463746
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "signed char");
3747-
//TODO TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned char");
3747+
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned char");
37483748
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "signed short");
3749-
//TODO TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned short");
3749+
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned short");
37503750
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "signed int");
3751-
//TODO TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned int");
3751+
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned int");
37523752
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "signed long");
37533753
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "unsigned long");
37543754
TEST_PRINTF_WARN("%tu", "unsigned ptrdiff_t", "signed long long");

0 commit comments

Comments
 (0)