hrev43670 adds 1 changeset to branch 'master' old head: 2a14f70ce80c2f6f2839ebf09dba2fd35fc13c15 new head: e4ff57c33f99608310f257d09cccf606f2b296c3 ---------------------------------------------------------------------------- e4ff57c: Use correct ALM variable index. There is list of all variables and a list of variables used by contraints. When editing the min, max variable constraints access the correct list. [ czeidler <haiku@xxxxxxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev43670 Commit: e4ff57c33f99608310f257d09cccf606f2b296c3 URL: http://cgit.haiku-os.org/haiku/commit/?id=e4ff57c Author: czeidler <haiku@xxxxxxxxxxxxxxxxxx> Date: Wed Jan 18 20:13:12 2012 UTC ---------------------------------------------------------------------------- 1 files changed, 11 insertions(+), 6 deletions(-) src/libs/linprog/ActiveSetSolver.cpp | 17 +++++++++++------ ---------------------------------------------------------------------------- diff --git a/src/libs/linprog/ActiveSetSolver.cpp b/src/libs/linprog/ActiveSetSolver.cpp index 0948c39..a1e8451 100644 --- a/src/libs/linprog/ActiveSetSolver.cpp +++ b/src/libs/linprog/ActiveSetSolver.cpp @@ -433,9 +433,14 @@ ActiveSetSolver::Solve() bool ActiveSetSolver::VariableAdded(Variable* variable) { - // TODO: error checks - fVariableGEConstraints.AddItem(NULL); - fVariableLEConstraints.AddItem(NULL); + if (fVariableGEConstraints.AddItem(NULL) == false) + return false; + if (fVariableLEConstraints.AddItem(NULL) == false) { + // clean up + int32 count = fVariableGEConstraints.CountItems(); + fVariableGEConstraints.RemoveItemAt(count - 1); + return false; + } return true; } @@ -443,8 +448,8 @@ ActiveSetSolver::VariableAdded(Variable* variable) bool ActiveSetSolver::VariableRemoved(Variable* variable) { - fVariableGEConstraints.RemoveItemAt(variable->Index()); - fVariableLEConstraints.RemoveItemAt(variable->Index()); + fVariableGEConstraints.RemoveItemAt(variable->GlobalIndex()); + fVariableLEConstraints.RemoveItemAt(variable->GlobalIndex()); return true; } @@ -454,7 +459,7 @@ ActiveSetSolver::VariableRangeChanged(Variable* variable) { double min = variable->Min(); double max = variable->Max(); - int32 variableIndex = variable->Index(); + int32 variableIndex = variable->GlobalIndex(); Constraint* constraintGE = fVariableGEConstraints.ItemAt(variableIndex); Constraint* constraintLE = fVariableLEConstraints.ItemAt(variableIndex);