From 26af87bbaaf818011e52fe55154e5cebce0ac686 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 22 Apr 2010 18:34:45 +0000 Subject: [PATCH] (svn r19695) -Fix: leaking a file descriptor --- src/network/network_server.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 1d4233af4e..e4d3554ade 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;