navigate march: Fix abort not to wipe out concurrent updates

When the player aborts the command at the movement prompt, we write
back stale ships or land units, triggering a generation oops.  Any
updates made by other threads meanwhile are wiped out, triggering a
seqno mismatch oops.

Broken in commit 24000b4, v4.3.33.  Fix by restoring the lost
shp_nav_stay_behind() and lnd_mar_stay_behind() calls.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2015-11-29 11:30:45 +01:00
parent 354b6aea3d
commit 42a3c10fd9
2 changed files with 5 additions and 6 deletions

View file

@ -407,10 +407,13 @@ unit_move(struct emp_qelem *list)
if (!*cp) {
cp = unit_move_getpath(list, suppress_map, path);
if (!cp) {
if (type == EF_SHIP)
if (type == EF_SHIP) {
shp_nav_stay_behind(list, player->cnum);
shp_nav_put(list, player->cnum);
else
} else {
lnd_mar_stay_behind(list, player->cnum);
lnd_mar_put(list, player->cnum);
}
return RET_FAIL;
}
cp = unit_move_route(leader, path, sizeof(path));