<URL: http://bugs.freeciv.org/Ticket/Display.html?id=39402 >
In 2.0, when a user join and start observing while SELECT_RACES_STATE, his
client crash because ruleset infos are not sent:
0: Cannot find any palace building
0: Cannot find any land defend building
civclient: unittype.c:89: get_unit_type: l'assertion « id >= 0 && id < 200
&& id < game.num_unit_types » a échoué.
I propose:
diff -aurd freeciv-2.0.9/server/stdinhand.c test/server/stdinhand.c
--- freeciv-2.0.9/server/stdinhand.c 2007-02-10 03:06:30.000000000 +0100
+++ test/server/stdinhand.c 2007-06-17 22:21:40.000000000 +0200
@@ -2803,8 +2803,14 @@
send_diplomatic_meetings(pconn);
send_packet_thaw_hint(pconn);
send_packet_start_turn(pconn);
+ } else if (server_state == SELECT_RACES_STATE) {
+ send_packet_freeze_hint(pconn);
+ send_rulesets(&pconn->self);
+ send_player_info(NULL, NULL);
+ send_packet_thaw_hint(pconn);
}
+
cmd_reply(CMD_OBSERVE, caller, C_OK, _("%s now observes %s"),
pconn->username, pplayer->name);
Sorry for the french messages.
_________________________________________________________________
Windows Live Messenger sur i-mode : dialoguez avec vos amis depuis votre
mobile comme sur PC ! http://mobile.live.fr/messenger/bouygues/
diff -aurd freeciv-2.0.9/server/stdinhand.c test/server/stdinhand.c
--- freeciv-2.0.9/server/stdinhand.c 2007-02-10 03:06:30.000000000 +0100
+++ test/server/stdinhand.c 2007-06-17 22:21:40.000000000 +0200
@@ -2803,8 +2803,14 @@
send_diplomatic_meetings(pconn);
send_packet_thaw_hint(pconn);
send_packet_start_turn(pconn);
+ } else if (server_state == SELECT_RACES_STATE) {
+ send_packet_freeze_hint(pconn);
+ send_rulesets(&pconn->self);
+ send_player_info(NULL, NULL);
+ send_packet_thaw_hint(pconn);
}
+
cmd_reply(CMD_OBSERVE, caller, C_OK, _("%s now observes %s"),
pconn->username, pplayer->name);
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev