From e42f1e6eb9d4df9bdd33be56d3768705583c7da4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 15 Aug 2023 17:58:27 +0200 Subject: [PATCH] bug5890: avoid endless recursion in iQ scoring when opening series consists of multiple sub-series --- .../LowPointWithEliminatingMedalSeriesWithPromotions.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminatingMedalSeriesWithPromotions.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminatingMedalSeriesWithPromotions.java index 113fc52bebb..e20be906679 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminatingMedalSeriesWithPromotions.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminatingMedalSeriesWithPromotions.java @@ -147,9 +147,13 @@ public abstract class LowPointWithEliminatingMedalSeriesWithPromotions extends L final int result; final Series lastSeriesO1ScoredIn = getLastSeriesCompetitorScoredIn(o1Scores); final Series lastSeriesO2ScoredIn = getLastSeriesCompetitorScoredIn(o2Scores); - if (lastSeriesO1ScoredIn == lastSeriesO2ScoredIn) { + // do regular score comparison if both scored only in non-medal series or up to the same medal series: + if (lastSeriesO1ScoredIn == lastSeriesO2ScoredIn || + ((lastSeriesO1ScoredIn == null || !lastSeriesO1ScoredIn.isMedal()) && + (lastSeriesO2ScoredIn == null || !lastSeriesO2ScoredIn.isMedal()))) { result = super.compareByScoreSum(o1, o1Scores, o1ScoreSum, o2, o2Scores, o2ScoreSum, nullScoresAreBetter, haveValidMedalRaceScores, competitorsRankedByOpeningSeries); } else { + // at least one competitor scored in a medal series that is assumed to come after all non-medal series; final int o1ZeroBasedLastScoredSeriesIndex = lastSeriesO1ScoredIn == null ? -1 : Util.indexOf(lastSeriesO1ScoredIn.getRegatta().getSeries(), lastSeriesO1ScoredIn); final int o2ZeroBasedLastScoredSeriesIndex = lastSeriesO2ScoredIn == null ? -1 :