[Freeciv-Dev] (PR#40087) client needs sanity check and other server log messages

2008-02-08 Thread William Allen Simpson

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40087 

Rewrite sanitycheck, and intercept other freelog() error and fatal messages.

Send via the Chat/Event message interface.



___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


Re: [Freeciv-Dev] (PR#40086) 2.2-test: city center tiles not worked

2008-02-08 Thread William Allen Simpson

URL: http://bugs.freeciv.org/Ticket/Display.html?id=40086 

Jason Dorje Short wrote:
 The CM code is in common/aicore/cm.c.
 
Well, I've spent a bit of time looking at that, and its pretty difficult.
Whomever wrote that was a genius, or an idiot

Anyway, using the old tried and true pedestrian debugging techniques, I've
found one very nasty place that this happens: IN THE SANITY CHECK!!!

Somebody felt the need to do more than check, without any message or
indication to the user!

In server/sanitycheck.c real_sanity_check_city():

   if (workers + city_specialists(pcity) != pcity-size + 1) {
 int diff = pcity-size + 1 - workers - city_specialists(pcity);

 SANITY_CITY(pcity, workers + city_specialists(pcity) == pcity-size + 1);
...

   if (diff  0) {
city_map_checked_iterate(pcity-tile, city_x, city_y, ptile) {
  if (ptile-worked == pcity  diff  0) {
server_remove_worker_city(pcity, city_x, city_y);
diff++;
  }
} city_map_checked_iterate_end;
   }

The first worker found is the city center!

Now, I still don't know how the dickens the city size is bad, but the
cure is worse than the disease

===

Other server_remove_worker_city() calls elsewhere have a check before them,
for example:

   if (!is_valid || is_free_worked_tile(city_map_x, city_map_y)) {
/* Can't remove a worker here. */
 continue;
   }
   server_remove_worker_city(acity, city_map_x, city_map_y);

===

This is called often -- sanitycheck needs a thorough cleaning.  And all
these error messages need to be sent to the client.  Currently, there's no
easy way for them to be seen during the game.



___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev