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).
This commit is contained in:
parent
69b74bb5dd
commit
94a3108b23
1 changed files with 4 additions and 0 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue