Skip to content

Commit

Permalink
COMP: Fix comparison of integer expressions of different signedness
Browse files Browse the repository at this point in the history
Use CastWithRangeCheck to safely convert size_t to int.
  • Loading branch information
blowekamp authored and dzenanz committed Sep 23, 2022
1 parent f756a4e commit a7c26b5
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions Modules/IO/MeshVTK/src/itkVTKPolyDataMeshIO.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -58,20 +58,18 @@ ReadFloatingPointsAsASCII(std::ifstream & inputFile,
{
return -NumericLimits::infinity();
}
const auto numberOfChars = str.size();

if (numberOfChars <= std::numeric_limits<int>::max())
{
constexpr auto double_NaN = std::numeric_limits<double>::quiet_NaN();
int processedCharCount{ 0 };
const double_conversion::StringToDoubleConverter converter(0, double_NaN, double_NaN, "inf", "nan");
const auto conversionResult =
converter.StringTo<TFloatingPoint>(str.c_str(), static_cast<int>(numberOfChars), &processedCharCount);
const int numberOfChars = Math::CastWithRangeCheck<int>(str.size());

if (processedCharCount == static_cast<int>(numberOfChars) && !std::isnan(conversionResult))
{
return conversionResult;
}
constexpr auto double_NaN = std::numeric_limits<double>::quiet_NaN();
int processedCharCount{ 0 };
const double_conversion::StringToDoubleConverter converter(0, double_NaN, double_NaN, "inf", "nan");
const auto conversionResult =
converter.StringTo<TFloatingPoint>(str.c_str(), numberOfChars, &processedCharCount);

if (processedCharCount == numberOfChars && !std::isnan(conversionResult))
{
return conversionResult;
}
}
itkGenericExceptionMacro("Failed to read a floating point component from the specified ASCII input file!"
Expand Down

0 comments on commit a7c26b5

Please sign in to comment.