Skip to content

Commit 53f4cf0

Browse files
committed
Deal with potential error returned by FHsolver::solve
1 parent 9f10a5d commit 53f4cf0

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

highs/ipm/hipo/factorhighs/Numeric.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Int Numeric::solve(std::vector<double>& x, Int* solve_count,
1717
double* omega) const {
1818
// Return the number of solves performed
1919

20-
assert(sn_columns_);
20+
if (!sn_columns_ || !S_) return kRetInvalidPointer;
2121

2222
// initialise solve handler
2323
SH_.reset(new HybridSolveHandler(*S_, *sn_columns_, swaps_, pivot_2x2_));

highs/ipm/hipo/factorhighs/ReturnValues.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ enum RetValue {
1010
kRetInvalidPivot,
1111
kRetMetisError,
1212
kRetIntOverflow,
13+
kRetInvalidPointer,
1314
kRetGeneric
1415
};
1516

highs/ipm/hipo/ipm/FactorHiGHSSolver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ Int FactorHiGHSSolver::solveNE(const std::vector<double>& rhs,
353353
Clock clock;
354354
Int solve_count;
355355
double final_res;
356-
Int solve_status = FH_.solve(lhs, &solve_count, &final_res);
356+
if (FH_.solve(lhs, &solve_count, &final_res)) return kStatusErrorSolve;
357357
if (info_) {
358358
info_->solve_time += clock.stop();
359359
info_->solve_number += solve_count;
@@ -383,7 +383,7 @@ Int FactorHiGHSSolver::solveAS(const std::vector<double>& rhs_x,
383383
Clock clock;
384384
Int solve_count;
385385
double final_res;
386-
Int solve_status = FH_.solve(rhs, &solve_count, &final_res);
386+
if (FH_.solve(rhs, &solve_count, &final_res)) return kStatusErrorSolve;
387387
if (info_) {
388388
info_->solve_time += clock.stop();
389389
info_->solve_number += solve_count;

0 commit comments

Comments
 (0)