From 9e8f74d23948520ff4faa8b9fd3919805ab118b0 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 22 Jun 2006 20:21:48 +0000 Subject: [PATCH] Support definition of additional sector types in sector.config, missing bits: (budg, calc_all, update_main): Use SCT_TYPE_MAX instead of SCT_MAXDEF to size tables. (map_char): Update sanity check; use CANT_HAPPEN(). (show_sect_build, show_sect_stats, show_sect_capab): Use the sentinel instead of SCT_MAXDEF. --- src/lib/commands/budg.c | 6 +++--- src/lib/common/maps.c | 4 +--- src/lib/subs/show.c | 7 ++++--- src/lib/update/main.c | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/lib/commands/budg.c b/src/lib/commands/budg.c index 41185ebaa..f13652b56 100644 --- a/src/lib/commands/budg.c +++ b/src/lib/commands/budg.c @@ -64,7 +64,7 @@ int budg(void) { int i; - long p_sect[SCT_MAXDEF+2][2]; + long p_sect[SCT_TYPE_MAX+2][2]; int taxes, Ncivs, Nuws, bars, Nbars, mil; int ships, sbuild, nsbuild, smaint; int units, lbuild, nlbuild, lmaint; @@ -90,7 +90,7 @@ budg(void) income = taxes + bars; expenses = 0; pr("Sector Type\t\t\tProduction\t\t\t Cost\n"); - for (i = 0; i <= SCT_MAXDEF; i++) { + for (i = 0; i <= SCT_TYPE_MAX; i++) { if (!p_sect[i][1] || i == SCT_CAPIT) continue; pr("%-17s\t\t", dchr[i].d_name); @@ -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+2) * 2); + memset(p_sect, 0, sizeof(**p_sect) * (SCT_TYPE_MAX+2) * 2); *taxes = *Ncivs = *Nuws = *bars = *Nbars = *mil = 0; *ships = *sbuild = *nsbuild = *smaint = 0; *units = *lbuild = *nlbuild = *lmaint = 0; diff --git a/src/lib/common/maps.c b/src/lib/common/maps.c index 796c642f4..23a23ac74 100644 --- a/src/lib/common/maps.c +++ b/src/lib/common/maps.c @@ -290,10 +290,8 @@ bmnxtsct(struct nstr_sect *np) static char map_char(unsigned char type, natid own, int owner_or_god) { - if (type > SCT_MAXDEF) { - logerror("bad sector type %d\n", type); + if (CANT_HAPPEN(type > SCT_TYPE_MAX || !dchr[type].d_mnem)) return '?'; - } if (owner_or_god || type == SCT_WATER || type == SCT_MOUNT || type == SCT_WASTE || (!own && (type == SCT_RURAL || type == SCT_PLAINS))) diff --git a/src/lib/subs/show.c b/src/lib/subs/show.c index a9e5b6b2f..f79536d04 100644 --- a/src/lib/subs/show.c +++ b/src/lib/subs/show.c @@ -32,6 +32,7 @@ * Jeff Bailey, 1990 * Steve McClure, 1996 * Ron Koenderink, 2005 + * Markus Armbruster, 2006 */ #include @@ -499,7 +500,7 @@ show_sect_build(int foo) int x, first; first = 1; - for (x = 0; x <= SCT_MAXDEF; x++) { + for (x = 0; dchr[x].d_name; x++) { if (dchr[x].d_mnem == 0) continue; if (dchr[x].d_cost < 0) @@ -537,7 +538,7 @@ show_sect_stats(int foo) struct natstr *natp; natp = getnatp(player->cnum); - for (x = 0; x <= SCT_MAXDEF; x++) { + for (x = 0; dchr[x].d_name; x++) { if (dchr[x].d_mnem == 0) continue; if (first) { @@ -567,7 +568,7 @@ show_sect_capab(int foo) int x, first = 1, i, j; char *tmpstr; - for (x = 0; x <= SCT_MAXDEF; x++) { + for (x = 0; dchr[x].d_name; x++) { if (dchr[x].d_mnem == 0 || dchr[x].d_prd < 0) continue; if (first) { diff --git a/src/lib/update/main.c b/src/lib/update/main.c index 3afc83490..9e24675a8 100644 --- a/src/lib/update/main.c +++ b/src/lib/update/main.c @@ -112,7 +112,7 @@ update_main(void *unused) logerror("done preparing sectors."); logerror("producing for countries..."); for (x = 0; x < MAXNOC; x++) { - long p_sect[SCT_MAXDEF+2][2]; + long p_sect[SCT_TYPE_MAX+2][2]; memset(p_sect, 0, sizeof(p_sect)); mil_dbl_pay = 0; -- 2.43.0