From f697d76a88d58b9092dede3acc57332bda8bf18b Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Tue, 11 Aug 2026 23:07:57 +0200 Subject: [PATCH] Correction racine du crash #56 : irand(0,-1) dans GetRandomCharacterByFuction Avec un seul personnage sur le compte bot, characters.size()/2 - 1 = -1 => ASSERT max >= min => SIGSEGV des que le module BG BotFill engage un bot. Le contournement historique etait pbotall=0 ; la borne est desormais sure. Co-Authored-By: Claude Fable 5 --- src/server/game/PlayerBot/PlayerBotMgr.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/server/game/PlayerBot/PlayerBotMgr.h b/src/server/game/PlayerBot/PlayerBotMgr.h index 2409fb3..e650055 100644 --- a/src/server/game/PlayerBot/PlayerBotMgr.h +++ b/src/server/game/PlayerBot/PlayerBotMgr.h @@ -156,7 +156,12 @@ struct PlayerBotBaseInfo for (int i = 0; i < 5; i++) #endif { - int16 select = irand(0, characters.size() / 2 - 1); + // SylvaniaCore: correction racine du crash #56 - avec un seul perso sur le + // compte, characters.size()/2 - 1 = -1 => irand(0,-1) => ASSERT max >= min + int32 maxSelect = int32(characters.size()) / 2 - 1; + if (maxSelect < 0) + maxSelect = 0; + int16 select = int16(irand(0, maxSelect)); for (CharInfoMap::iterator it = characters.begin(); it != characters.end(); it++)