@@ -3043,8 +3043,10 @@ bool HighsDomain::ConflictSet::resolveLinearGeq(HighsCDouble M, double Mupper,
30433043 M -= reasonDomchg.delta ;
30443044 // ++numDropped;
30453045 } else {
3046- while (relaxLb <= localdom.prevboundval_ [locdomchg.pos ].first )
3046+ while (locdomchg.pos != -1 &&
3047+ relaxLb <= localdom.prevboundval_ [locdomchg.pos ].first )
30473048 locdomchg.pos = localdom.prevboundval_ [locdomchg.pos ].second ;
3049+ if (locdomchg.pos == -1 ) return false ;
30483050
30493051 // bound can be relaxed
30503052 M += vals[i] * (static_cast <HighsCDouble>(relaxLb) - lb);
@@ -3078,8 +3080,10 @@ bool HighsDomain::ConflictSet::resolveLinearGeq(HighsCDouble M, double Mupper,
30783080 // ++numDropped;
30793081 } else {
30803082 // bound can be relaxed
3081- while (relaxUb >= localdom.prevboundval_ [locdomchg.pos ].first )
3083+ while (locdomchg.pos != -1 &&
3084+ relaxUb >= localdom.prevboundval_ [locdomchg.pos ].first )
30823085 locdomchg.pos = localdom.prevboundval_ [locdomchg.pos ].second ;
3086+ if (locdomchg.pos == -1 ) return false ;
30833087
30843088 M += vals[i] * (static_cast <HighsCDouble>(relaxUb) - ub);
30853089 // ++numRelaxed;
@@ -3163,8 +3167,10 @@ bool HighsDomain::ConflictSet::resolveLinearLeq(HighsCDouble M, double Mlower,
31633167 // ++numDropped;
31643168 } else {
31653169 // bound can be relaxed
3166- while (relaxLb <= localdom.prevboundval_ [locdomchg.pos ].first )
3170+ while (locdomchg.pos != -1 &&
3171+ relaxLb <= localdom.prevboundval_ [locdomchg.pos ].first )
31673172 locdomchg.pos = localdom.prevboundval_ [locdomchg.pos ].second ;
3173+ if (locdomchg.pos == -1 ) return false ;
31683174
31693175 M += vals[i] * (static_cast <HighsCDouble>(relaxLb) - lb);
31703176 // ++numRelaxed;
@@ -3197,8 +3203,10 @@ bool HighsDomain::ConflictSet::resolveLinearLeq(HighsCDouble M, double Mlower,
31973203 // ++numDropped;
31983204 } else {
31993205 // bound can be relaxed
3200- while (relaxUb >= localdom.prevboundval_ [locdomchg.pos ].first )
3206+ while (locdomchg.pos != -1 &&
3207+ relaxUb >= localdom.prevboundval_ [locdomchg.pos ].first )
32013208 locdomchg.pos = localdom.prevboundval_ [locdomchg.pos ].second ;
3209+ if (locdomchg.pos == -1 ) return false ;
32023210
32033211 M += vals[i] * (static_cast <HighsCDouble>(relaxUb) - ub);
32043212 // ++numRelaxed;
0 commit comments