Help repair invalid rotation settings

We had a period where we were writing invalid rotations leading to
values too large by a factor of 100.  This clamps the stored values
while repairing those affected

Fixes https://gitlab.com/kicad/code/kicad/issues/11090
This commit is contained in:
Seth Hillbrand 2022-03-10 09:43:21 -08:00
parent e278e77314
commit f218da6ea5
1 changed files with 11 additions and 1 deletions

View File

@ -135,12 +135,22 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM_LAMBDA<int>( "editing.rotation_angle",
[this] () -> int
{
return m_RotationAngle.AsTenthsOfADegree();
int rot = m_RotationAngle.AsTenthsOfADegree();
// Don't store values larger than 360 degrees
return rot % 3600;
},
[this] ( int aVal )
{
if( aVal )
m_RotationAngle = EDA_ANGLE( aVal, TENTHS_OF_A_DEGREE_T );
// A misconfiguration allowed some angles to be stored as tenth of a degree but read
// as tens of degrees. By disallowing storage of values larger than 360, we can weed out
// those invalid values here.
while( m_RotationAngle > ANGLE_360 )
m_RotationAngle = m_RotationAngle / 100;
},
900 ) );