(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
|
@ -151,9 +151,9 @@ struct dchrstr {
|
|||
#define SCT_ENLIST 31 /* enlistment center */
|
||||
#define SCT_PLAINS 32 /* plains sector */
|
||||
#define SCT_BTOWER 33 /* Bridge tower */
|
||||
#define SCT_MAXDEF 33 /* highest sector type in header files */
|
||||
|
||||
#define SCT_EFFIC 34 /* used in update & budget */
|
||||
#define SCT_MAXDEF 34 /* highest sector type in header files */
|
||||
|
||||
#define getsect(x, y, p) ef_read(EF_SECTOR, sctoff((x), (y)), (p))
|
||||
#define putsect(p) ef_write(EF_SECTOR, sctoff((p)->sct_x, (p)->sct_y), (p))
|
||||
|
@ -163,7 +163,7 @@ struct dchrstr {
|
|||
/* things relating to sectors */
|
||||
extern int sctoff(coord x, coord y);
|
||||
|
||||
extern struct dchrstr dchr[SCT_MAXDEF + 1];
|
||||
extern struct dchrstr dchr[SCT_MAXDEF + 2];
|
||||
extern struct dchrstr bigcity_dchr;
|
||||
#define IS_BIG_CITY(type) (dchr[(type)].d_pkg == UPKG)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue