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:
tetektoza
2025-06-12 23:30:13 +02:00
committed by Kacper Donat
parent f5c32243a6
commit 60a86b05c4
3 changed files with 15 additions and 15 deletions

View File

@@ -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) {

View File

@@ -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: {

View File

@@ -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);
}