summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-04-22 18:34:45 +0000
committerrubidium <rubidium@openttd.org>2010-04-22 18:34:45 +0000
commit26af87bbaaf818011e52fe55154e5cebce0ac686 (patch)
tree61bafda036b7d080e7ceb9093554eb2d119f7c2e
parent8bc0231f984d02df6dd9e3508c3d4826d2e332d8 (diff)
downloadopenttd-26af87bbaaf818011e52fe55154e5cebce0ac686.tar.xz
(svn r19695) -Fix: leaking a file descriptor
-rw-r--r--src/network/network_server.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index 1d4233af4..e4d3554ad 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -322,7 +322,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
* nothing
*/
- static FILE *file_pointer;
+ static FILE *file_pointer = NULL;
static uint sent_packets; // How many packets we did send succecfully last time
if (cs->status < STATUS_AUTHORIZED) {
@@ -337,9 +337,12 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
/* Make a dump of the current game */
if (SaveOrLoad(filename, SL_SAVE, AUTOSAVE_DIR) != SL_OK) usererror("network savedump failed");
+ if (file_pointer != NULL) fclose(file_pointer);
+
file_pointer = FioFOpenFile(filename, "rb", AUTOSAVE_DIR);
- fseek(file_pointer, 0, SEEK_END);
+ if (file_pointer == NULL) usererror("network savedump failed - could not open just saved dump");
+ fseek(file_pointer, 0, SEEK_END);
if (ftell(file_pointer) == 0) usererror("network savedump failed - zero sized savegame?");
/* Now send the _frame_counter and how many packets are coming */
@@ -382,6 +385,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
* to send it is ready (maybe that happens like never ;)) */
cs->status = STATUS_DONE_MAP;
fclose(file_pointer);
+ file_pointer = NULL;
NetworkClientSocket *new_cs;
bool new_map_client = false;