Index: server/citytools.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/citytools.c,v retrieving revision 1.189 diff -u -r1.189 citytools.c --- server/citytools.c 2002/09/02 02:19:54 1.189 +++ server/citytools.c 2002/09/14 15:42:14 @@ -2110,9 +2110,11 @@ } /************************************************************************** -Wrapper. -You need to call sync_cities for the affected cities to be synced with the -client. +Wrapper (using map positions) for update_city_tile_status (which uses +city map positions). + +You need to call sync_cities for the affected cities to be synced with +the client. **************************************************************************/ void update_city_tile_status_map(struct city *pcity, int map_x, int map_y) { @@ -2146,12 +2148,23 @@ server_set_tile_city(pcity, city_x, city_y, C_TILE_UNAVAILABLE); add_adjust_workers(pcity); /* will place the displaced */ city_refresh(pcity); + send_city_info(NULL, pcity); } break; case C_TILE_UNAVAILABLE: if (is_available) { + /* Was auto_arrange_workers called? This avoids recursion. */ + static bool aaw_called = FALSE; + server_set_tile_city(pcity, city_x, city_y, C_TILE_EMPTY); + + if (!aaw_called) { + aaw_called = TRUE; + auto_arrange_workers(pcity); + aaw_called = FALSE; + send_city_info(NULL, pcity); + } } break;