From df107cb2326d95709d385497323e76fc187e9e28 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Sun, 2 Aug 2026 02:59:12 +0000 Subject: [PATCH] ToS : fix crash SIGSEGV a la creation d instance (recursion infinie GetSaveData) Le harnais bot a intercepte 3 crashs avant tout joueur : mon renommage de la passe 4 (GetBossSaveData -> GetSaveData, la suggestion du compilateur) avait transforme l override GetSaveData en appel recursif infini -> stack overflow des qu une instance 1676 se cree. Fix racine : suppression des overrides GetSaveData/Load du module, la persistance generique d InstanceScript (SetBossState) fait foi dans les deux sens. LECON : ne jamais accepter aveuglement le did-you-mean du compilateur quand la fonction suggeree est celle qu on est en train de definir. Co-Authored-By: Claude Fable 5 --- .../instance_tomb_of_sargeras.cpp | 42 ++----------------- 1 file changed, 3 insertions(+), 39 deletions(-) diff --git a/src/server/scripts/BrokenIsles/TombOfSargeras/instance_tomb_of_sargeras.cpp b/src/server/scripts/BrokenIsles/TombOfSargeras/instance_tomb_of_sargeras.cpp index 311b8f2..7c22690 100644 --- a/src/server/scripts/BrokenIsles/TombOfSargeras/instance_tomb_of_sargeras.cpp +++ b/src/server/scripts/BrokenIsles/TombOfSargeras/instance_tomb_of_sargeras.cpp @@ -503,45 +503,9 @@ public: return &loc_res_pla; } - std::string GetSaveData() override - { - std::ostringstream saveStream; - saveStream << "T O S " << GetSaveData(); - return saveStream.str(); - } - - void Load(const char* data) override - { - if (!data) - { - OUT_LOAD_INST_DATA_FAIL; - return; - } - - OUT_LOAD_INST_DATA(data); - - char dataHead1, dataHead2, dataHead3; - - std::istringstream loadStream(data); - loadStream >> dataHead1 >> dataHead2 >> dataHead3; - - if (dataHead1 == 'T' && dataHead2 == 'O' && dataHead3 == 'S') - { - for (uint32 i = 0; i < MAX_ENCOUNTER; ++i) - { - uint32 tmpState; - loadStream >> tmpState; - if (tmpState == IN_PROGRESS || tmpState > SPECIAL) - tmpState = NOT_STARTED; - SetBossState(i, EncounterState(tmpState)); - } - } - else - OUT_LOAD_INST_DATA_FAIL; - - OUT_LOAD_INST_DATA_COMPLETE; - - } + // GetSaveData/Load : la persistance generique d InstanceScript fait foi + // (l override uwow appelait GetBossSaveData, absent chez nous -> le renommage + // avait cree une recursion infinie = crash SIGSEGV a la creation d instance) void Update(uint32 diff) override {