From: Crossfire C. r. messages.
<cro...@li...> - 2016-08-13 04:01:15
|
Revision: 20305 http://sourceforge.net/p/crossfire/code/20305 Author: partmedia Date: 2016-08-13 04:01:12 +0000 (Sat, 13 Aug 2016) Log Message: ----------- Fix sign extension by using unsigned cast Reported by: Coverity Scan Modified Paths: -------------- server/trunk/common/map.c server/trunk/include/map.h server/trunk/server/c_misc.c server/trunk/server/c_wiz.c Modified: server/trunk/common/map.c =================================================================== --- server/trunk/common/map.c 2016-08-04 00:42:30 UTC (rev 20304) +++ server/trunk/common/map.c 2016-08-13 04:01:12 UTC (rev 20305) @@ -826,6 +826,11 @@ return map; } +/** Calculate map size without intermediate sign extension. */ +uint32_t map_size(mapstruct *m) { + return (uint32_t)m->width * (uint32_t)m->height; +} + /** * This basically allocates the dynamic array of spaces for the * map. @@ -847,7 +852,7 @@ free(m->spaces); } - m->spaces = calloc(MAP_WIDTH(m) * MAP_HEIGHT(m), sizeof(MapSpace)); + m->spaces = calloc(map_size(m), sizeof(MapSpace)); if (m->spaces == NULL) fatal(OUT_OF_MEMORY); Modified: server/trunk/include/map.h =================================================================== --- server/trunk/include/map.h 2016-08-04 00:42:30 UTC (rev 20304) +++ server/trunk/include/map.h 2016-08-13 04:01:12 UTC (rev 20305) @@ -79,7 +79,7 @@ /** Map height. */ #define MAP_HEIGHT(m) (m)->height /** Convenient function - total number of spaces is used in many places. */ -#define MAP_SIZE(m) ((m)->width*(m)->height) +#define MAP_SIZE(m) map_size(m) /** Default X coordinate for map enter. */ #define MAP_ENTER_X(m) (m)->enter_x @@ -383,4 +383,6 @@ object *part; /**< Part we found. */ } rv_vector; +uint32_t map_size(mapstruct *m); + #endif /* MAP_H */ Modified: server/trunk/server/c_misc.c =================================================================== --- server/trunk/server/c_misc.c 2016-08-04 00:42:30 UTC (rev 20304) +++ server/trunk/server/c_misc.c 2016-08-13 04:01:12 UTC (rev 20305) @@ -225,7 +225,7 @@ for (m = first_map, nrofmaps = 0; m != NULL; m = m->next, nrofmaps++) if (m->in_memory == MAP_IN_MEMORY) { - mapmem += MAP_WIDTH(m)*MAP_HEIGHT(m)*(sizeof(object *)+sizeof(MapSpace)); + mapmem += map_size(m) * (sizeof(object *) + sizeof(MapSpace)); nrm++; } Modified: server/trunk/server/c_wiz.c =================================================================== --- server/trunk/server/c_wiz.c 2016-08-04 00:42:30 UTC (rev 20304) +++ server/trunk/server/c_wiz.c 2016-08-13 04:01:12 UTC (rev 20305) @@ -2684,7 +2684,7 @@ for (mp = styles; mp != NULL; mp = mp->next) { maps_used++; - mapmem += MAP_WIDTH(mp)*MAP_HEIGHT(mp)*(sizeof(object *)+sizeof(MapSpace))+sizeof(mapstruct); + mapmem += map_size(mp) * (sizeof(object *)+sizeof(MapSpace))+sizeof(mapstruct); for (x = 0; x < MAP_WIDTH(mp); x++) { for (y = 0; y < MAP_HEIGHT(mp); y++) { FOR_MAP_PREPARE(mp, x, y, tmp) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |