Fix navigate and march not to lay mines free of charge

do_unit_move() reads the ships into a list.  It re-reads them when it
prompts for sub-commands.  shp_nav_one_sector() writes them back when
it moves ships.

Mine-laying (sub-command 'd') updates the minelayer, invalidating the
copy in the list.  Any movement sub-command before the next prompt for
sub-commands wiped out this update, triggering a seno mismatch oops.

Happens only if 'd' is used without arguments, because remaining
sub-commands are discarded when there are arguments.

Broken when mine-laying was added in commits 2438fe7c, v4.3.7.

Same for march, commit 274c8e42, v4.3.7.

Fix by stopping after 'd' regardless of arguments.
This commit is contained in:
Markus Armbruster 2010-03-13 22:47:13 +01:00
parent 45106ab91f
commit 28cc236e12

View file

@ -253,6 +253,7 @@ do_unit_move(struct emp_qelem *ulist, int *together,
mine();
else
landmine();
stopping = 1;
skip = 1;
player->btused++;
continue;