]> git.pond.sub.org Git - empserver/commitdiff
Fix marking of unused trade slots
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 14 Sep 2008 16:04:32 +0000 (12:04 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 15 Sep 2008 23:40:44 +0000 (19:40 -0400)
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

index d5e65aa52a1d6e6ac45749544c6f29884cec2bca..d5aea2702e59b6900777a5a75cca32d90a0edfee 100644 (file)
@@ -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");