mirror of https://github.com/stella-emu/stella.git
Fix crash in TimeLineWidget when setStepValues() is passed an empty list.
This commit is contained in:
parent
eb96e1ca49
commit
1ce528ff99
|
@ -81,16 +81,21 @@ void TimeLineWidget::setMaxValue(int value)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void TimeLineWidget::setStepValues(const IntArray& steps)
|
void TimeLineWidget::setStepValues(const IntArray& steps)
|
||||||
{
|
{
|
||||||
// Try to allocate as infrequently as possible
|
|
||||||
if(steps.size() > _stepValue.capacity())
|
|
||||||
_stepValue.reserve(2 * steps.size());
|
|
||||||
_stepValue.clear();
|
_stepValue.clear();
|
||||||
|
|
||||||
double scale = (_w - _labelWidth - 4) / double(steps.back());
|
// If no steps are defined, just use the maximum value
|
||||||
|
if(steps.size() > 0)
|
||||||
|
{
|
||||||
|
// Try to allocate as infrequently as possible
|
||||||
|
if(steps.size() > _stepValue.capacity())
|
||||||
|
_stepValue.reserve(2 * steps.size());
|
||||||
|
|
||||||
// Skip the very last value; we take care of it outside the end of the loop
|
double scale = (_w - _labelWidth - 4) / double(steps.back());
|
||||||
for(uInt32 i = 0; i < steps.size() - 1; ++i)
|
|
||||||
_stepValue.push_back(int(steps[i] * scale));
|
// Skip the very last value; we take care of it outside the end of the loop
|
||||||
|
for(uInt32 i = 0; i < steps.size() - 1; ++i)
|
||||||
|
_stepValue.push_back(int(steps[i] * scale));
|
||||||
|
}
|
||||||
|
|
||||||
// Due to integer <-> double conversion, the last value is sometimes
|
// Due to integer <-> double conversion, the last value is sometimes
|
||||||
// slightly less than the maximum value; we assign it manually to fix this
|
// slightly less than the maximum value; we assign it manually to fix this
|
||||||
|
|
Loading…
Reference in New Issue