Author: cazfi Date: Sun Apr 10 11:21:47 2016 New Revision: 32337 URL: http://svn.gna.org/viewcvs/freeciv?rev=32337&view=rev Log: Free ruleset choices list server has generated for local clients.
See bug #24564 Modified: branches/S2_5/server/gamehand.c branches/S2_5/server/gamehand.h branches/S2_5/server/srv_main.c Modified: branches/S2_5/server/gamehand.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/server/gamehand.c?rev=32337&r1=32336&r2=32337&view=diff ============================================================================== --- branches/S2_5/server/gamehand.c (original) +++ branches/S2_5/server/gamehand.c Sun Apr 10 11:21:47 2016 @@ -78,6 +78,8 @@ #define SPECPQ_DATA_TYPE struct team_placement_state * #define SPECPQ_PRIORITY_TYPE long #include "specpq.h" + +static struct strvec *ruleset_choices = NULL; /**************************************************************************** Get unit_type for given role character @@ -1028,23 +1030,32 @@ static void send_ruleset_choices(struct connection *pc) { struct packet_ruleset_choices packet; - static struct strvec *rulesets = NULL; size_t i; - if (!rulesets) { + if (ruleset_choices == NULL) { /* This is only read once per server invocation. Add a new ruleset * and you have to restart the server. */ - rulesets = fileinfolist(get_data_dirs(), RULESET_SUFFIX); - } - - packet.ruleset_count = MIN(MAX_NUM_RULESETS, strvec_size(rulesets)); + ruleset_choices = fileinfolist(get_data_dirs(), RULESET_SUFFIX); + } + + packet.ruleset_count = MIN(MAX_NUM_RULESETS, strvec_size(ruleset_choices)); for (i = 0; i < packet.ruleset_count; i++) { - sz_strlcpy(packet.rulesets[i], strvec_get(rulesets, i)); + sz_strlcpy(packet.rulesets[i], strvec_get(ruleset_choices, i)); } send_packet_ruleset_choices(pc, &packet); } +/************************************************************************** + Free list of ruleset choices. +**************************************************************************/ +void ruleset_choices_free(void) +{ + if (ruleset_choices != NULL) { + free(ruleset_choices); + ruleset_choices = NULL; + } +} /**************************************************************************** Opens a file specified by the packet and compares the packet values with Modified: branches/S2_5/server/gamehand.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/server/gamehand.h?rev=32337&r1=32336&r2=32337&view=diff ============================================================================== --- branches/S2_5/server/gamehand.h (original) +++ branches/S2_5/server/gamehand.h Sun Apr 10 11:21:47 2016 @@ -1,4 +1,4 @@ -/********************************************************************** +/********************************************************************** Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,4 +30,6 @@ const char *new_challenge_filename(struct connection *pc); +void ruleset_choices_free(void); + #endif /* FC__GAMEHAND_H */ Modified: branches/S2_5/server/srv_main.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/server/srv_main.c?rev=32337&r1=32336&r2=32337&view=diff ============================================================================== --- branches/S2_5/server/srv_main.c (original) +++ branches/S2_5/server/srv_main.c Sun Apr 10 11:21:47 2016 @@ -1481,6 +1481,7 @@ generator_free(); close_connections_and_socket(); rulesets_deinit(); + ruleset_choices_free(); timing_log_free(); registry_module_close(); fc_destroy_mutex(&game.server.mutexes.city_list); _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits