From 94a3108b23d23afa8e65aa8c138845cc905c3c28 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 14 Sep 2008 12:04:32 -0400 Subject: [PATCH] Fix marking of unused trade slots Trade code can't quite decide whether negative trd_unitid or zero trd_owner marks unused slots. The former is a bad idea, because blank slots have a zero trd_unitid. Make sure to zero trd_owner when setting trd_unitid to negative value in trad() and check_trade(). This fixes recognition of unused slots in set (broken in commit e16e38df, v4.2.18) and xdump (never worked). --- src/lib/commands/trad.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib/commands/trad.c b/src/lib/commands/trad.c index d5e65aa52..d5aea2702 100644 --- a/src/lib/commands/trad.c +++ b/src/lib/commands/trad.c @@ -133,6 +133,7 @@ trad(void) } if (!trade_getitem(&trade, &tg)) { pr("Can't find trade #%d!\n", trade.trd_unitid); + trade.trd_owner = 0; trade.trd_unitid = -1; if (!puttrade(lotno, &trade)) { logerror("trad: can't write trade"); @@ -289,12 +290,14 @@ check_trade(void) if (!trade_getitem(&trade, &tg)) continue; if (tg.gen.own == 0) { + trade.trd_owner = 0; trade.trd_unitid = -1; puttrade(n, &trade); continue; } if (tg.gen.own != trade.trd_owner) { logerror("Something weird, tg.gen.own != trade.trd_owner!\n"); + trade.trd_owner = 0; trade.trd_unitid = -1; puttrade(n, &trade); continue; @@ -312,6 +315,7 @@ check_trade(void) continue; saveid = trade.trd_unitid; + trade.trd_owner = 0; trade.trd_unitid = -1; if (!puttrade(n, &trade)) { logerror("Couldn't save trade after purchase; get help!\n"); -- 2.43.0