From: Markus Armbruster Date: Sat, 20 Mar 2010 10:24:49 +0000 (+0100) Subject: Fix navigate and march not to prompt for number of mines to lay X-Git-Tag: hvy-plastic-2.2~3 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=89992611193563b722e08b3e2faa38666c1e1ecf Fix navigate and march not to prompt for number of mines to lay When sub-command 'd' was used without arguments, do_unit_move() failed to supply the second argument to mine(), which duly prompted for it. This contracticted info, and could trigger a generation oops. 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. The mine prompt made the list stale. Movement sub-commands before the next prompt for sub-commands wrote back stale ships, triggering a generation oops. Example: "nav 15 dg". Broken when mine-laying was added in commits 2438fe7c, v4.3.7. Same for march, commit 274c8e42, v4.3.7. (cherry picked from commit 45106ab91ffe6193bc90a725e8a07a7a3997f54c) --- diff --git a/src/lib/commands/navi.c b/src/lib/commands/navi.c index 0f6189cdb..0213be259 100644 --- a/src/lib/commands/navi.c +++ b/src/lib/commands/navi.c @@ -244,8 +244,8 @@ do_unit_move(struct emp_qelem *ulist, int *together, skip = 1; continue; case 'd': - if (ac == 2) { - player->argp[2] = player->argp[1]; + if (ac < 3) { + player->argp[2] = ac < 2 ? "1" : player->argp[1]; sprintf(dp, "%d", leader->uid); player->argp[1] = dp; }