From 7886464688e3fbb2945889fea90e8af4a10261e8 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Tue, 5 Apr 2016 16:11:47 -0400 Subject: [PATCH] Bug1347: Need defense against bad values in .cfg file for meter refresh --- src/widgets/Meter.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/widgets/Meter.cpp b/src/widgets/Meter.cpp index e9da1be76..4b01f8486 100644 --- a/src/widgets/Meter.cpp +++ b/src/widgets/Meter.cpp @@ -42,6 +42,7 @@ #include "Meter.h" #include "../AudacityApp.h" +#include #include #include #include @@ -73,6 +74,9 @@ #include "../Experimental.h" #include "../widgets/valnum.h" +static const long MIN_REFRESH_RATE = 1; +static const long MAX_REFRESH_RATE = 100; + /* Updates to the meter are passed accross via meter updates, each contained in * a MeterUpdateMsg object */ wxString MeterUpdateMsg::toString() @@ -375,7 +379,9 @@ void Meter::UpdatePrefs() { mDBRange = gPrefs->Read(ENV_DB_KEY, ENV_DB_RANGE); - mMeterRefreshRate = gPrefs->Read(Key(wxT("RefreshRate")), 30); + mMeterRefreshRate = + std::max(MIN_REFRESH_RATE, std::min(MAX_REFRESH_RATE, + gPrefs->Read(Key(wxT("RefreshRate")), 30))); mGradient = gPrefs->Read(Key(wxT("Bars")), wxT("Gradient")) == wxT("Gradient"); mDB = gPrefs->Read(Key(wxT("Type")), wxT("dB")) == wxT("dB"); mMeterDisabled = gPrefs->Read(Key(wxT("Disabled")), (long)0); @@ -1942,7 +1948,8 @@ void Meter::OnPreferences(wxCommandEvent & WXUNUSED(event)) 10); rate->SetName(_("Meter refresh rate per second [1-100]")); IntegerValidator vld(&mMeterRefreshRate); - vld.SetRange(1, 100); + + vld.SetRange(MIN_REFRESH_RATE, MAX_REFRESH_RATE); rate->SetValidator(vld); } S.EndHorizontalLay();