Browse Source

DebugTools: assert that we don't overflow the counter in FrameProfiler.

For example when the profiled value is something really crazy, like a
negative value stored in an unsigned type. Before it tripped up on
another assert much later, this now makes the problem being caught much
earlier.
pull/525/head
Vladimír Vondruš 5 years ago
parent
commit
845dee36a7
  1. 7
      src/Magnum/DebugTools/FrameProfiler.cpp

7
src/Magnum/DebugTools/FrameProfiler.cpp

@ -229,8 +229,11 @@ void FrameProfiler::endFrame() {
/* If we have enough frames, add the new measurement to the moving sum.
For _delay of 0 or 1, delayedCurrentData(Math::max(1u, measurement._delay))
is equal to _currentData. */
if(_measuredFrameCount >= measurementDelay)
_measurements[i]._movingSum += _data[delayedCurrentData(measurementDelay)*_measurements.size() + i];
if(_measuredFrameCount >= measurementDelay) {
const UnsignedLong data = _data[delayedCurrentData(measurementDelay)*_measurements.size() + i];
CORRADE_INTERNAL_ASSERT(_measurements[i]._movingSum + data >= _measurements[i]._movingSum);
_measurements[i]._movingSum += data;
}
}
}

Loading…
Cancel
Save