Sketcher: Fix OOB access to OVPs
Stupid mistake of mine from previous refactor - some of the OVPs do not contain those elements and thus should not be accessed prematurely. This patch moves access to the OVPs when it's actually needed so it won't go out of bounds.
This commit is contained in:
@@ -587,7 +587,6 @@ void DSHArcControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPo
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) {
|
||||
if (fifthParam->isSet) {
|
||||
@@ -602,6 +601,7 @@ void DSHArcControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPo
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (fifthParam->isSet) {
|
||||
onSketchPos.x = fifthParam->getValue();
|
||||
}
|
||||
@@ -677,7 +677,6 @@ void DSHArcController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) {
|
||||
double range = Base::toDegrees(handler->arcAngle);
|
||||
@@ -693,6 +692,7 @@ void DSHArcController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
fifthParam->setLabelRange(handler->arcAngle);
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (!fifthParam->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Fifth, onSketchPos.x);
|
||||
}
|
||||
@@ -734,15 +734,13 @@ void DSHArcController::doChangeDrawSketchHandlerMode()
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
|
||||
if (fifthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
|
||||
@@ -451,7 +451,6 @@ void DSHCircleControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerCircle::ConstructionMethod::Center) {
|
||||
@@ -472,6 +471,7 @@ void DSHCircleControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
if (thirdParam->isSet) {
|
||||
onSketchPos.x = thirdParam->getValue();
|
||||
}
|
||||
@@ -533,7 +533,6 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerCircle::ConstructionMethod::Center) {
|
||||
@@ -557,6 +556,7 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
thirdParam->setPoints(start, end);
|
||||
}
|
||||
else {
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
if (!thirdParam->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Third, onSketchPos.x);
|
||||
}
|
||||
@@ -609,7 +609,6 @@ void DSHCircleController::doChangeDrawSketchHandlerMode()
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
auto& thirdParam = onViewParameters[OnViewParameter::Third];
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
|
||||
if (thirdParam->hasFinishedEditing
|
||||
&& handler->constructionMethod()
|
||||
@@ -617,11 +616,14 @@ void DSHCircleController::doChangeDrawSketchHandlerMode()
|
||||
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
else if (onViewParameters.size() > 3 && thirdParam->isSet && fourthParam->isSet
|
||||
&& handler->constructionMethod()
|
||||
== DrawSketchHandlerCircle::ConstructionMethod::ThreeRim) {
|
||||
else if (onViewParameters.size() > 3) {
|
||||
auto& fourthParam = onViewParameters[OnViewParameter::Fourth];
|
||||
if (thirdParam->isSet && fourthParam->isSet
|
||||
&& handler->constructionMethod()
|
||||
== DrawSketchHandlerCircle::ConstructionMethod::ThreeRim) {
|
||||
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
|
||||
@@ -556,7 +556,6 @@ void DSHEllipseControllerBase::doEnforceControlParameters(Base::Vector2d& onSket
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerEllipse::ConstructionMethod::Center) {
|
||||
@@ -570,6 +569,7 @@ void DSHEllipseControllerBase::doEnforceControlParameters(Base::Vector2d& onSket
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (fifthParam->isSet) {
|
||||
onSketchPos.x = fifthParam->getValue();
|
||||
}
|
||||
@@ -655,7 +655,6 @@ void DSHEllipseController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerEllipse::ConstructionMethod::Center) {
|
||||
@@ -669,6 +668,7 @@ void DSHEllipseController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
fifthParam->setPoints(start, end);
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (!fifthParam->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Fifth, onSketchPos.x);
|
||||
}
|
||||
@@ -711,7 +711,6 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode()
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
auto& fifthParam = onViewParameters[OnViewParameter::Fifth];
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerEllipse::ConstructionMethod::Center) {
|
||||
@@ -720,6 +719,7 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode()
|
||||
}
|
||||
}
|
||||
else {
|
||||
auto& sixthParam = onViewParameters[OnViewParameter::Sixth];
|
||||
if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) {
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user