Don't write garbage to unused trade destination in trade file
struct trdstr members trd_x, trd_y are used only for teleporting trades. For others, trad() wrote garbage coordinates to the trade file. They weren't used except by xdump. Fortunately, even there they're visible only to deities. Write invalid coordinates instead. Do that in set() as well, so that coordinates are valid only when we have a teleport destination. Spotted by the Clang Static Analyzer.
This commit is contained in:
parent
8c78b1188b
commit
10736cd157
3 changed files with 10 additions and 10 deletions
|
@ -54,7 +54,7 @@ struct trdstr {
|
||||||
long trd_price;
|
long trd_price;
|
||||||
int trd_maxbidder;
|
int trd_maxbidder;
|
||||||
time_t trd_markettime;
|
time_t trd_markettime;
|
||||||
coord trd_x;
|
coord trd_x; /* destination for teleporting trade */
|
||||||
coord trd_y;
|
coord trd_y;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@ set(void)
|
||||||
else
|
else
|
||||||
id = ni_trade.cur;
|
id = ni_trade.cur;
|
||||||
ef_blank(EF_TRADE, id, &trade);
|
ef_blank(EF_TRADE, id, &trade);
|
||||||
trade.trd_x = item.gen.x;
|
trade.trd_x = 1;
|
||||||
trade.trd_y = item.gen.y;
|
trade.trd_y = 0;
|
||||||
trade.trd_type = type;
|
trade.trd_type = type;
|
||||||
trade.trd_owner = player->cnum;
|
trade.trd_owner = player->cnum;
|
||||||
trade.trd_unitid = ni.cur;
|
trade.trd_unitid = ni.cur;
|
||||||
|
|
|
@ -177,11 +177,8 @@ trad(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
canspend = natp->nat_money - tally;
|
canspend = natp->nat_money - tally;
|
||||||
/*
|
|
||||||
* Find the destination sector for the plane before the trade is
|
/* Find the destination sector for the trade */
|
||||||
* actually made, except for satellites in orbit. Must be owned
|
|
||||||
* and must be a 60% airfield (except for VTOL planes).
|
|
||||||
*/
|
|
||||||
if (((trade.trd_type == EF_PLANE) && !pln_is_in_orbit(&tg.plane))
|
if (((trade.trd_type == EF_PLANE) && !pln_is_in_orbit(&tg.plane))
|
||||||
|| (trade.trd_type == EF_NUKE)) {
|
|| (trade.trd_type == EF_NUKE)) {
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -211,8 +208,7 @@ trad(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} else if (trade.trd_type == EF_LAND) {
|
||||||
if (trade.trd_type == EF_LAND) {
|
|
||||||
while (1) {
|
while (1) {
|
||||||
p = getstring("Destination sector: ", buf);
|
p = getstring("Destination sector: ", buf);
|
||||||
if (!trade_check_ok(&trade, &tg))
|
if (!trade_check_ok(&trade, &tg))
|
||||||
|
@ -238,6 +234,10 @@ trad(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
/* This trade doesn't teleport; make destination invalid */
|
||||||
|
sx = 1;
|
||||||
|
sy = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = getstring("How much do you bid: ", buf);
|
p = getstring("How much do you bid: ", buf);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue