(SCT_MAXDEF): Make it equal the maximum sector type, not the maximum
plus one. Users changed. This indirectly fixes off-by-one loop bounds in budg(), show_sect_build(), show_sect_stats() and show_sect_capab(). The show bugs were harmless: the loops ran into the sentinel, which they ignore. The budg bug was serious: the loop ran into the entries for SCT_EFFIC. This lead to a bogus line in the budget, printing of a null pointer, and doubled sector build cost. Budget priorities masked this bug until rev. 1.25.
This commit is contained in:
parent
f9588063ff
commit
2d99971a7f
4 changed files with 6 additions and 6 deletions
|
@ -64,7 +64,7 @@ int
|
|||
budg(void)
|
||||
{
|
||||
int i;
|
||||
long p_sect[SCT_MAXDEF+1][2];
|
||||
long p_sect[SCT_MAXDEF+2][2];
|
||||
int taxes, Ncivs, Nuws, bars, Nbars, mil;
|
||||
int ships, sbuild, nsbuild, smaint;
|
||||
int units, lbuild, nlbuild, lmaint;
|
||||
|
@ -198,7 +198,7 @@ calc_all(long p_sect[][2],
|
|||
int etu = etu_per_update;
|
||||
|
||||
mil_dbl_pay = 0;
|
||||
memset(p_sect, 0, sizeof(**p_sect) * (SCT_MAXDEF+1) * 2);
|
||||
memset(p_sect, 0, sizeof(**p_sect) * (SCT_MAXDEF+2) * 2);
|
||||
*taxes = *Ncivs = *Nuws = *bars = *Nbars = *mil = 0;
|
||||
*ships = *sbuild = *nsbuild = *smaint = 0;
|
||||
*units = *lbuild = *nlbuild = *lmaint = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue