From 74e873e96c064bb65bd780f7b768cad634e9375b Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 22 Feb 2008 20:58:37 +0100 Subject: [PATCH] Make sector types signed get_empobj_chr() and emp_obj_chr_name() access struct sctstr member sct_type through struct empobj member type. This is technically non-portable, because the two differ in signedness. It was also undocumented. Fix by making sct_type signed. sct_newtype as well, for consistency. map_char() uses unsigned char for a sector type argument. Change that to int. Matches how this is done elsewhere. --- include/empobj.h | 3 ++- include/sect.h | 4 ++-- src/lib/global/nsc.c | 4 ++-- src/lib/subs/maps.c | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/empobj.h b/include/empobj.h index 2d46022f9..59df1367f 100644 --- a/include/empobj.h +++ b/include/empobj.h @@ -56,7 +56,8 @@ struct empobj { short uid; coord x; /* is valid if EFF_XY is set in table def. */ coord y; /* is valid if EFF_XY is set in table def. */ - signed char type; + signed char type; /* is valid for sectors and units */ + /* remaining are valid for units */ signed char effic; signed char mobil; unsigned char off; diff --git a/include/sect.h b/include/sect.h index 18610e49b..a960706ee 100644 --- a/include/sect.h +++ b/include/sect.h @@ -48,8 +48,8 @@ struct sctstr { short sct_elev; /* elevation/depth */ coord sct_x; /* x coord of sector */ coord sct_y; /* y coord of sector */ + signed char sct_type; /* sector type */ /* end of part matching struct empobj */ - unsigned char sct_type; /* sector type */ unsigned char sct_effic; /* 0% to 100% */ short sct_mobil; /* mobility units */ unsigned char sct_loyal; /* updates until civilans "converted" */ @@ -65,7 +65,7 @@ struct sctstr { short sct_fill; /* gunk */ unsigned char sct_work; /* pct of civ actually working */ unsigned char sct_coastal; /* is this a coastal sector? */ - unsigned char sct_newtype; /* for changing designations */ + signed char sct_newtype; /* for changing designations */ unsigned char sct_min; /* ease of mining ore */ unsigned char sct_gmin; /* amount of gold ore */ unsigned char sct_fertil; /* fertility of soil */ diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index a08897632..0c20baaea 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -108,7 +108,7 @@ struct castr sect_ca[] = { {NSC_SHORT, NSC_DEITY, 0, fldoff(sctstr, sct_elev), "elev", EF_BAD}, {NSC_XCOORD, NSC_CONST, 0, fldoff(sctstr, sct_x), "xloc", EF_BAD}, {NSC_YCOORD, NSC_CONST, 0, fldoff(sctstr, sct_y), "yloc", EF_BAD}, - {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_type), "des", EF_SECTOR_CHR}, + {NSC_CHAR, 0, 0, fldoff(sctstr, sct_type), "des", EF_SECTOR_CHR}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_effic), "effic", EF_BAD}, {NSC_SHORT, 0, 0, fldoff(sctstr, sct_mobil), "mobil", EF_BAD}, {NSC_UCHAR, NSC_DEITY, 0, fldoff(sctstr, sct_loyal), "loyal", EF_BAD}, @@ -123,7 +123,7 @@ struct castr sect_ca[] = { {NSC_SHORT, 0, 0, fldoff(sctstr, sct_avail), "avail", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_work), "work", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_coastal), "coastal", EF_BAD}, - {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_newtype), "newdes", EF_SECTOR_CHR}, + {NSC_CHAR, 0, 0, fldoff(sctstr, sct_newtype), "newdes", EF_SECTOR_CHR}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_min), "min", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_gmin), "gold", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_fertil), "fert", EF_BAD}, diff --git a/src/lib/subs/maps.c b/src/lib/subs/maps.c index b60d5d670..4990e5ab7 100644 --- a/src/lib/subs/maps.c +++ b/src/lib/subs/maps.c @@ -54,7 +54,7 @@ #include "xy.h" static int bmnxtsct(struct nstr_sect *); -static char map_char(unsigned char type, natid own, int owner_or_god); +static char map_char(int type, natid own, int owner_or_god); int do_map(int bmap, int unit_type, char *arg, char *map_flags_arg) @@ -330,7 +330,7 @@ bmnxtsct(struct nstr_sect *np) * If OWNER_OR_GOD, the map is for the sector's owner or a deity. */ static char -map_char(unsigned char type, natid own, int owner_or_god) +map_char(int type, natid own, int owner_or_god) { if (CANT_HAPPEN(type > SCT_TYPE_MAX || !dchr[type].d_mnem)) return '?'; -- 2.43.0