From a88d0a88b8942ab307ff9c854de9156edd489a25 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 5 Oct 2007 17:53:01 +0000 Subject: [PATCH] (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 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 2149b6270a..eaf98c499b 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -836,10 +836,9 @@ static CommandCost ClearTile_Road(TileIndex tile, byte flags) 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 @@ static CommandCost ClearTile_Road(TileIndex tile, byte flags) } return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST); } -#undef M case ROAD_TILE_CROSSING: { RoadTypes rts = GetRoadTypes(tile);