From 6a30258d31975814061ea28c67a4cc19e6e27fa8 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 12 Jan 2021 21:42:42 +0100 Subject: [PATCH] buy: Don't continue when lot changes while asking for bid When the lot being bid for changes while the player is at the "How much" prompt, we report "Commodity #%d has changed!", and continue with the changed lot. If continuing is okay, we should keep quiet. We did that until commit 40b11c098 "Fix buy not to wipe out concurrent updates", v4.3.27. Okay when only the lot's price changed. However, the lot could have gone away, or even be reused for something else. Failing the command seems safest for the player, so do that. It's how we use the check_FOO_ok() elsewhere. Signed-off-by: Markus Armbruster --- src/lib/commands/buy.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/commands/buy.c b/src/lib/commands/buy.c index 3b24033e2..83b85d56d 100644 --- a/src/lib/commands/buy.c +++ b/src/lib/commands/buy.c @@ -101,6 +101,8 @@ buy(void) bid = atof(p); if (bid <= 0) return RET_FAIL; + if (!check_comm_ok(&comm)) + return RET_FAIL; if (natp->nat_money < bid * comm.com_amount * buytax) { pr("This purchase would cost %.2f, %.2f more than you have.\n", bid * comm.com_amount * buytax, @@ -126,7 +128,6 @@ buy(void) } } canspend = natp->nat_money - tally; - check_comm_ok(&comm); if (bid * comm.com_amount * buytax > canspend) { pr("You have overextended yourself in the market\n"); pr("You can not bid on the current items at that price.\n"); -- 2.43.0