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:
parent
354b6aea3d
commit
42a3c10fd9
2 changed files with 5 additions and 6 deletions
|
@ -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));
|
||||
|
|
|
@ -8,14 +8,10 @@ Connect from 127.0.0.1
|
|||
Connect from 127.0.0.1
|
||||
tester@127.0.0.1 using country #1
|
||||
tester@127.0.0.1 logged in as country #1
|
||||
Oops: elt->generation != (ef_generation & 0xfff) in ../src/lib/common/file.c:699
|
||||
Crash dump complete
|
||||
tester@127.0.0.1 logged out, country #1
|
||||
Connect from 127.0.0.1
|
||||
tester@127.0.0.1 using country #1
|
||||
tester@127.0.0.1 logged in as country #1
|
||||
Oops: elt->generation != (ef_generation & 0xfff) in ../src/lib/common/file.c:699
|
||||
Crash dump complete
|
||||
tester@127.0.0.1 logged out, country #1
|
||||
Connect from 127.0.0.1
|
||||
tester@127.0.0.1 using country #0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue