Index: client/gui-gtk/wldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/wldlg.c,v retrieving revision 1.22 diff -u -r1.22 wldlg.c --- client/gui-gtk/wldlg.c 2002/02/19 15:21:00 1.22 +++ client/gui-gtk/wldlg.c 2002/02/25 15:53:33 @@ -648,7 +648,7 @@ /* Validate this slot. */ init_worklist(&packet.worklist); - packet.worklist.is_valid = 1; + packet.worklist.is_valid = TRUE; strcpy(packet.worklist.name, _("empty worklist")); packet.wl_idx = j; @@ -688,8 +688,7 @@ /* The last worklist in the set is no longer valid -- it's been slid up one slot. */ - packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 0; + packet.worklist.is_valid = FALSE; packet.wl_idx = i - 1; send_packet_player_request(&aconnection, &packet, PACKET_PLAYER_WORKLIST); Index: client/gui-mui/wldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/wldlg.c,v retrieving revision 1.9 diff -u -r1.9 wldlg.c --- client/gui-mui/wldlg.c 2001/12/11 16:16:34 1.9 +++ client/gui-mui/wldlg.c 2002/02/25 15:53:34 @@ -106,7 +106,7 @@ /* Validate this slot. */ init_worklist(&packet.worklist); - packet.worklist.is_valid = 1; + packet.worklist.is_valid = TRUE; sz_strlcpy(packet.worklist.name, _("empty worklist")); packet.wl_idx = j; @@ -143,8 +143,7 @@ /* The last worklist in the set is no longer valid -- it's been slid up one slot. */ - packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 0; + packet.worklist.is_valid = FALSE; packet.wl_idx = i-1; send_packet_player_request(&aconnection, &packet, PACKET_PLAYER_WORKLIST); } Index: client/gui-win32/wldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/wldlg.c,v retrieving revision 1.4 diff -u -r1.4 wldlg.c --- client/gui-win32/wldlg.c 2002/02/19 15:21:02 1.4 +++ client/gui-win32/wldlg.c 2002/02/25 15:53:35 @@ -152,8 +152,7 @@ /* The last worklist in the set is no longer valid -- it's been slid up one slot. */ - packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 0; + packet.worklist.is_valid = FALSE; packet.wl_idx = i - 1; send_packet_player_request(&aconnection, &packet, PACKET_PLAYER_WORKLIST); @@ -201,7 +200,7 @@ /* Validate this slot. */ init_worklist(&packet.worklist); - packet.worklist.is_valid = 1; + packet.worklist.is_valid = TRUE; strcpy(packet.worklist.name, _("empty worklist")); packet.wl_idx = j; Index: client/gui-xaw/wldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/wldlg.c,v retrieving revision 1.16 diff -u -r1.16 wldlg.c --- client/gui-xaw/wldlg.c 2002/02/19 15:21:03 1.16 +++ client/gui-xaw/wldlg.c 2002/02/25 15:53:36 @@ -669,7 +669,7 @@ /* Validate this slot. */ init_worklist(&packet.worklist); - packet.worklist.is_valid = 1; + packet.worklist.is_valid = TRUE; strcpy(packet.worklist.name, _("empty worklist")); packet.wl_idx = j; @@ -708,8 +708,7 @@ /* The last worklist in the set is no longer valid -- it's been slid up one slot. */ - packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 0; + packet.worklist.is_valid = FALSE; packet.wl_idx = i-1; send_packet_player_request(&aconnection, &packet, PACKET_PLAYER_WORKLIST); } Index: common/packets.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.c,v retrieving revision 1.185 diff -u -r1.185 packets.c --- common/packets.c 2002/02/25 15:24:58 1.185 +++ common/packets.c 2002/02/25 15:53:39 @@ -1697,14 +1697,24 @@ { unsigned char buffer[MAX_LEN_PACKET], *cptr; + /* can't modify the packet directly */ + struct worklist copy; + + if (req_type == PACKET_PLAYER_WORKLIST) { + /* packet->worklist.is_valid may be FALSE if the client want to + remove a worklist. */ + copy_worklist(©, &packet->worklist); + } else { + copy.is_valid = FALSE; + } + cptr=put_uint8(buffer+2, req_type); cptr=put_uint8(cptr, packet->tax); cptr=put_uint8(cptr, packet->luxury); cptr=put_uint8(cptr, packet->science); cptr=put_uint8(cptr, packet->government); cptr=put_uint8(cptr, packet->tech); - cptr = put_worklist(pc, cptr, &packet->worklist, - req_type == PACKET_PLAYER_WORKLIST); + cptr = put_worklist(pc, cptr, ©, req_type == PACKET_PLAYER_WORKLIST); cptr=put_uint8(cptr, packet->wl_idx); if (has_capability("attributes", pc->capability)) {