From 73414ee56c280e91a925d9d5156fd324bc9dd4fa Mon Sep 17 00:00:00 2001 From: Dmitry-Me Date: Fri, 17 Nov 2017 23:58:09 +0300 Subject: [PATCH] Fix FN for std::uintmax_t passed as %Lu and %Lx into scanf --- lib/checkio.cpp | 2 +- test/testio.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/checkio.cpp b/lib/checkio.cpp index e59b828e3..564ae0c6d 100644 --- a/lib/checkio.cpp +++ b/lib/checkio.cpp @@ -783,7 +783,7 @@ void CheckIO::checkFormatString(const Token * const tok, if (argInfo.typeToken->str() != "long" || !argInfo.typeToken->isLong()) invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true); else if (typesMatch(argInfo.typeToken->originalName(), "size_t") || - argInfo.typeToken->originalName() == "uintmax_t") + typesMatch(argInfo.typeToken->originalName(), "uintmax_t")) invalidScanfArgTypeError_int(tok, numFormat, specifier, &argInfo, true); break; default: diff --git a/test/testio.cpp b/test/testio.cpp index c0fafd95a..5cdd06194 100644 --- a/test/testio.cpp +++ b/test/testio.cpp @@ -1312,7 +1312,7 @@ private: TEST_SCANF_WARN_AKA("%Lu", "unsigned long long", "std::ssize_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA("%Lu", "unsigned long long", "std::ptrdiff_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA("%Lu", "unsigned long long", "std::intmax_t", "signed long", "signed long long"); - TEST_SCANF_WARN_AKA_WIN32("%Lu", "unsigned long long", "std::uintmax_t", "unsigned long"); + TEST_SCANF_WARN_AKA("%Lu", "unsigned long long", "std::uintmax_t", "unsigned long", "unsigned long long"); TEST_SCANF_WARN_AKA("%Lu", "unsigned long long", "std::intptr_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA_WIN32("%Lu", "unsigned long long", "std::uintptr_t", "unsigned long"); @@ -1344,7 +1344,7 @@ private: TEST_SCANF_WARN_AKA("%Lx", "unsigned long long", "std::ssize_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA("%Lx", "unsigned long long", "std::ptrdiff_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA("%Lx", "unsigned long long", "std::intmax_t", "signed long", "signed long long"); - TEST_SCANF_WARN_AKA_WIN32("%Lx", "unsigned long long", "std::uintmax_t", "unsigned long"); + TEST_SCANF_WARN_AKA("%Lx", "unsigned long long", "std::uintmax_t", "unsigned long", "unsigned long long"); TEST_SCANF_WARN_AKA("%Lx", "unsigned long long", "std::intptr_t", "signed long", "signed long long"); TEST_SCANF_WARN_AKA_WIN32("%Lx", "unsigned long long", "std::uintptr_t", "unsigned long");