From 6add2baa4089f52ccbd62852ae63872e0669e8a5 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Sun, 9 Jun 2024 11:12:47 +0200 Subject: [PATCH] fix: Prevent endless loop --- .../de/twomartens/wahlrecht/service/CalculationService.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/module-server/src/main/kotlin/de/twomartens/wahlrecht/service/CalculationService.kt b/module-server/src/main/kotlin/de/twomartens/wahlrecht/service/CalculationService.kt index c49f6d6..16990b4 100644 --- a/module-server/src/main/kotlin/de/twomartens/wahlrecht/service/CalculationService.kt +++ b/module-server/src/main/kotlin/de/twomartens/wahlrecht/service/CalculationService.kt @@ -247,6 +247,7 @@ class CalculationService( var assignedSeats: Long var assignedSeatsPerVotingResult: Map log.debug("Calculate assigned seats with initial election number {}", electionNumber) + var numberOfAttempts = 5 do { electionNumberHistory.add(electionNumber) val seatsPerVotingResult: MutableMap = mutableMapOf() @@ -277,7 +278,11 @@ class CalculationService( ) log.debug("Calculated higher election number {}", electionNumber) } - } while (assignedSeats != numberOfSeats.toLong()) + numberOfAttempts-- + } while (assignedSeats != numberOfSeats.toLong() && numberOfAttempts > 0) + if (numberOfAttempts == 0 && assignedSeats != numberOfSeats.toLong()) { + log.error("With the given result, the solution can never be calculated") + } return assignedSeatsPerVotingResult }