Skip to content

Commit

Permalink
STYLE: Remove diff variables from ConvertPixelBuffer (warning C26451)
Browse files Browse the repository at this point in the history
These four local `diff` variables appeared unnecessary, after commit
f8e3d3b ("ERR: ++ replaced with +1, +2, etc.
to avoid possible compiler problems.", Bill Lorensen, 2002-09-03). Removing
them fixed a few Visual Studio 2019 16.11.21 Code Analysis warnings, saying:

> warning C26451: Arithmetic overflow: Using operator '+' on a 4 byte value and
> then casting the result to a 8 byte value. Cast the value to the wider type
> before calling operator '+' to avoid overflow (io.2).
  • Loading branch information
N-Dekker authored and dzenanz committed Nov 29, 2022
1 parent 8f4728c commit 288d87b
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions Modules/IO/ImageBase/include/itkConvertPixelBuffer.hxx
Expand Up @@ -274,18 +274,16 @@ ConvertPixelBuffer<InputPixelType, OutputPixelType, OutputConvertTraits>::Conver
// http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html
// NOTE: The scale factors are converted to whole numbers for
// precision
ptrdiff_t diff = inputNumberOfComponents - 4;
InputPixelType * endInput = inputData + size * (size_t)inputNumberOfComponents;
while (inputData != endInput)
{
double tempval = ((2125.0 * static_cast<double>(*inputData) + 7154.0 * static_cast<double>(*(inputData + 1)) +
0721.0 * static_cast<double>(*(inputData + 2))) /
10000.0) *
static_cast<double>(*(inputData + 3)) / maxAlpha;
inputData += 4;
auto val = static_cast<OutputComponentType>(tempval);
OutputConvertTraits::SetNthComponent(0, *outputData++, val);
inputData += diff;
inputData += inputNumberOfComponents;
}
}
}
Expand Down Expand Up @@ -371,15 +369,13 @@ ConvertPixelBuffer<InputPixelType, OutputPixelType, OutputConvertTraits>::Conver
// just skip the rest of the data
else
{
ptrdiff_t diff = inputNumberOfComponents - 3;
InputPixelType * endInput = inputData + size * (size_t)inputNumberOfComponents;
while (inputData != endInput)
{
OutputConvertTraits::SetNthComponent(0, *outputData, static_cast<OutputComponentType>(*inputData));
OutputConvertTraits::SetNthComponent(1, *outputData, static_cast<OutputComponentType>(*(inputData + 1)));
OutputConvertTraits::SetNthComponent(2, *outputData, static_cast<OutputComponentType>(*(inputData + 2)));
inputData += 3;
inputData += diff;
inputData += inputNumberOfComponents;
++outputData;
}
}
Expand Down Expand Up @@ -475,16 +471,14 @@ ConvertPixelBuffer<InputPixelType, OutputPixelType, OutputConvertTraits>::Conver
}
else
{
ptrdiff_t diff = inputNumberOfComponents - 4;
InputPixelType * endInput = inputData + size * (size_t)inputNumberOfComponents;
while (inputData != endInput)
{
OutputConvertTraits::SetNthComponent(0, *outputData, static_cast<OutputComponentType>(*inputData));
OutputConvertTraits::SetNthComponent(1, *outputData, static_cast<OutputComponentType>(*(inputData + 1)));
OutputConvertTraits::SetNthComponent(2, *outputData, static_cast<OutputComponentType>(*(inputData + 2)));
OutputConvertTraits::SetNthComponent(3, *outputData, static_cast<OutputComponentType>(*(inputData + 3)));
inputData += 4;
inputData += diff;
inputData += inputNumberOfComponents;
++outputData;
}
}
Expand Down Expand Up @@ -603,15 +597,13 @@ ConvertPixelBuffer<InputPixelType, OutputPixelType, OutputConvertTraits>::Conver
OutputPixelType * outputData,
size_t size)
{
ptrdiff_t diff = inputNumberOfComponents - 2;
InputPixelType * endInput = inputData + size * (size_t)inputNumberOfComponents;

while (inputData != endInput)
{
OutputConvertTraits::SetNthComponent(0, *outputData, static_cast<OutputComponentType>(*inputData));
OutputConvertTraits::SetNthComponent(1, *outputData, static_cast<OutputComponentType>(*(inputData + 1)));
inputData += 2;
inputData += diff;
inputData += inputNumberOfComponents;
++outputData;
}
}
Expand Down

0 comments on commit 288d87b

Please sign in to comment.