From a042cef5b1f589be61e401cdc1f46e42b54fa5ce Mon Sep 17 00:00:00 2001 From: wish Date: Thu, 30 Mar 2023 23:32:10 +1100 Subject: [PATCH] fix possible infinite loop in gacha rolls --- server/channelserver/handlers_shop_gacha.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/channelserver/handlers_shop_gacha.go b/server/channelserver/handlers_shop_gacha.go index 2ebf209ea..1341e341c 100644 --- a/server/channelserver/handlers_shop_gacha.go +++ b/server/channelserver/handlers_shop_gacha.go @@ -358,6 +358,9 @@ func getRandomEntries(entries []GachaEntry, rolls int, isBox bool) ([]GachaEntry totalWeight += entries[i].Weight } for { + if rolls == len(chosen) { + break + } if !isBox { result := rand.Float64() * totalWeight for _, entry := range entries { @@ -373,9 +376,6 @@ func getRandomEntries(entries []GachaEntry, rolls int, isBox bool) ([]GachaEntry entries[result] = entries[len(entries)-1] entries = entries[:len(entries)-1] } - if rolls == len(chosen) { - break - } } return chosen, nil }