• # segfault équipes de moins de 6 joueurs

    Posté par . En réponse au journal Wormux 0.7beta1. Évalué à 1.

    J'ai régulièrement des segfaults après des décès quand je joue avec des petites équipes. Je crois que ça viens de là (parceque "vers.size()", il vaut toujours 6, d'où possibilité de sélectionner des vers qui n'existent pas) :
    --- team/team.cpp.orig
    +++ team/team.cpp
    @@ -301,9 +301,9 @@
     void Team::SelectCharacterIndex (uint index)
     {
     // Ver mort ?
    - assert (index < vers.size());
    + assert (index < game_mode.max_characters);
     if (vers.at(index).IsDead()) {
    - int i = (++index)%vers.size();
    + int i = (++index)%game_mode.max_characters;
     SelectCharacterIndex(i);
     return;
     }
    Mais j'ai à peine testé ceci dit, donc à prendre avec des pincettes... Et puis y'a d'autres bizarreries toujours autour de la "sélection du prochain vers à jouer", genre souvent un vers joue plusieurs fois avant que le tour n'arrive à un de ses coéquipiers (peut-être Team::NextCharacterIndex() ou Team::internal_NextCharacter(), dont je comprends pas trop pourquoi elles n'incrémentent qu'en cas de vers mort). Mais j'ai pas beaucoup cherché, c'est juste une vague piste...