(svn r11206) -Fix [FS#1299]: half tram bits could be removed in some cases. Based on patches by frosch and skidd13.
authorrubidium
Fri, 05 Oct 2007 17:53:01 +0000
changeset 8171 9e36b23ecbff
parent 8170 5ec8665fb427
child 8172 1e26cade13cb
(svn r11206) -Fix [FS#1299]: half tram bits could be removed in some cases. Based on patches by frosch and skidd13.
src/road_cmd.cpp
--- a/src/road_cmd.cpp	Fri Oct 05 17:50:17 2007 +0000
+++ b/src/road_cmd.cpp	Fri Oct 05 17:53:01 2007 +0000
@@ -836,10 +836,9 @@
 		case ROAD_TILE_NORMAL: {
 			RoadBits b = GetAllRoadBits(tile);
 
-#define M(x) (1 << (x))
 			/* Clear the road if only one piece is on the tile OR the AI tries
 			 * to clear town road OR we are not using the DC_AUTO flag */
-			if ((M(b) & (M(ROAD_NW) | M(ROAD_SW) | M(ROAD_SE) | M(ROAD_NE))) ||
+			if ((COUNTBITS(b) == 1 && GetRoadBits(tile, ROADTYPE_TRAM) == ROAD_NONE) ||
 			    ((flags & DC_AI_BUILDING) && IsTileOwner(tile, OWNER_TOWN)) ||
 			    !(flags & DC_AUTO)
 				) {
@@ -856,7 +855,6 @@
 			}
 			return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST);
 		}
-#undef M
 
 		case ROAD_TILE_CROSSING: {
 			RoadTypes rts = GetRoadTypes(tile);