Index: common/map.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/map.c,v retrieving revision 1.48 diff -u -r1.48 map.c --- map.c 2000/06/13 15:05:07 1.48 +++ map.c 2000/06/13 15:40:18 @@ -418,10 +418,6 @@ if (map_get_tile(x, y)->special&S_HUT) return 1; - /* don't start on a river: */ - if (map_get_tile(x, y)->special&S_RIVER) - return 1; - /* don't want them starting on the poles: */ if (map_get_continent(x, y)<=2) return 1; Index: server/mapgen.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/mapgen.c,v retrieving revision 1.51 diff -u -r1.51 mapgen.c --- mapgen.c 2000/01/31 17:04:36 1.51 +++ mapgen.c 2000/06/13 15:40:26 @@ -729,12 +729,13 @@ where do the different races start on the map? well this function tries to spread them out on the different islands. **************************************************************************/ - +#define MAXTRIES 1000000 void create_start_positions(void) { int nr=0; int dist=40; int x, y, j=0; + int counter = 0; if (islands==NULL) /* already setup for generator>1 */ setup_isledata(); @@ -773,6 +774,14 @@ j=0; } } + } + counter++; + if (counter > MAXTRIES) { + freelog(LOG_FATAL, "The server appears to have gotten into an " + "infinite loop in the allocation of starting positions, " + "and will abort.\n" + "Please report this bug at www.freeciv.org"); + abort(); } } map.num_start_positions = game.nplayers;