Skip to content

Commit 78be821

Browse files
committed
Fix FN for std::uintmax_t passed as %llx, %llu scanf read targets
1 parent cc08d51 commit 78be821

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

lib/checkio.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ void CheckIO::checkFormatString(const Token * const tok,
747747
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);
748748
else if (typesMatch(argInfo.typeToken->originalName(), "size_t") ||
749749
typesMatch(argInfo.typeToken->originalName(), "ptrdiff_t") ||
750-
typesMatch(argInfo.typeToken->originalName(), "intmax_t", "u"))
750+
typesMatch(argInfo.typeToken->originalName(), "uintmax_t"))
751751
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);
752752
} else if (argInfo.typeToken->str() != "long" || argInfo.typeToken->isLong())
753753
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);
@@ -899,7 +899,7 @@ void CheckIO::checkFormatString(const Token * const tok,
899899
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);
900900
else if (typesMatch(argInfo.typeToken->originalName(), "size_t") ||
901901
typesMatch(argInfo.typeToken->originalName(), "ptrdiff_t") ||
902-
argInfo.typeToken->originalName() == "uintmax_t")
902+
typesMatch(argInfo.typeToken->originalName(), "uintmax_t"))
903903
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);
904904
} else if (argInfo.typeToken->str() != "long" || argInfo.typeToken->isLong())
905905
invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true);

test/testio.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,7 @@ class TestIO : public TestFixture {
10841084
TEST_SCANF_WARN_AKA("%llu","unsigned long long","std::ssize_t", "signed long", "signed long long");
10851085
TEST_SCANF_WARN_AKA("%llu","unsigned long long","std::ptrdiff_t", "signed long", "signed long long");
10861086
TEST_SCANF_WARN_AKA("%llu","unsigned long long","std::intmax_t", "signed long", "signed long long");
1087-
TEST_SCANF_WARN_AKA_WIN32("%llu","unsigned long long","std::uintmax_t", "unsigned long");
1087+
TEST_SCANF_WARN_AKA("%llu","unsigned long long","std::uintmax_t", "unsigned long", "unsigned long long");
10881088
TEST_SCANF_WARN_AKA("%llu","unsigned long long","std::intptr_t", "signed long", "signed long long");
10891089
TEST_SCANF_WARN_AKA_WIN32("%llu","unsigned long long","std::uintptr_t", "unsigned long");
10901090

@@ -1116,7 +1116,7 @@ class TestIO : public TestFixture {
11161116
TEST_SCANF_WARN_AKA("%llx","unsigned long long","std::ssize_t", "signed long", "signed long long");
11171117
TEST_SCANF_WARN_AKA("%llx","unsigned long long","std::ptrdiff_t", "signed long", "signed long long");
11181118
TEST_SCANF_WARN_AKA("%llx","unsigned long long","std::intmax_t", "signed long", "signed long long");
1119-
TEST_SCANF_WARN_AKA_WIN32("%llx","unsigned long long","std::uintmax_t", "unsigned long");
1119+
TEST_SCANF_WARN_AKA("%llx","unsigned long long","std::uintmax_t", "unsigned long", "unsigned long long");
11201120
TEST_SCANF_WARN_AKA("%llx","unsigned long long","std::intptr_t", "signed long", "signed long long");
11211121
TEST_SCANF_WARN_AKA_WIN32("%llx","unsigned long long","std::uintptr_t", "unsigned long");
11221122

0 commit comments

Comments
 (0)