Cast to unsigned char when using std::isalnum

std::isalnum expects an int in the range of unsigned char or -1 (EOF),
otherwise it exhibits undefined behavior. Casting from char to unsigned
char avoids this.

MSVC warns about this when compiling with /analyze.
This commit is contained in:
Ian Hattendorf 2018-04-28 23:23:30 -07:00 committed by Martin Hořeňovský
parent 9e7c281e6e
commit 88a6ff0b65

View File

@ -37,7 +37,7 @@ namespace Catch {
return TestCaseInfo::None; return TestCaseInfo::None;
} }
bool isReservedTag( std::string const& tag ) { bool isReservedTag( std::string const& tag ) {
return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !std::isalnum( tag[0] ); return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !std::isalnum( static_cast<unsigned char>(tag[0]) );
} }
void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) {
CATCH_ENFORCE( !isReservedTag(tag), CATCH_ENFORCE( !isReservedTag(tag),