From 45106ab91ffe6193bc90a725e8a07a7a3997f54c Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 20 Mar 2010 11:24:49 +0100 Subject: [PATCH] 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. --- src/lib/commands/navi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; } -- 2.43.0