Comment 0 for bug 1636966

Revision history for this message
Notabilis (notabilis27) wrote :

Sorry to disturb the rc1 party but I found a bug. :-(

When soldiers are fighting a segfault can occur when the battle only consists of one soldier.
To be more specific:

In src/logic/map_objects/tribes/soldier.cc :
1256 Soldier& opponent = *battle_->opponent(*this);

The call might return nullptr when the other soldier is no longer part of the battle (in my cases it was the first_ soldier in battle_ who was missing / pointed to 0x0). The description of the method contains "Can return nullptr, but I have no idea what that means." which is what is happening here.

Since someone was aware of (part of) the issue there might be a check for nullptr missing in soldier.cc. Otherwise there is probably some cancel-battle-code somewhere which is missing the part of removing the other soldier. Does anyone has an idea which of the cases applies?
Sadly I can not provide any more information about what was happening since I wasn't observing the game. However, GDB is still running if that is any use.