(svn r1540) -Fix: since grf files are reopened on every load/new game, close the old opened to fix stale filehandles (thx tamlin)
authordarkvater
Sun, 16 Jan 2005 12:40:25 +0000
changeset 1039 8736f759759b
parent 1038 cf60aaf4c4ba
child 1040 71a267bebb29
(svn r1540) -Fix: since grf files are reopened on every load/new game, close the old opened to fix stale filehandles (thx tamlin)
fileio.c
--- a/fileio.c	Sun Jan 16 12:30:52 2005 +0000
+++ b/fileio.c	Sun Jan 16 12:40:25 2005 +0000
@@ -83,16 +83,20 @@
 	fread(ptr, 1, size, _fio.cur_fh);
 }
 
+static inline void FioCloseFile(int slot)
+{
+	if (_fio.handles[slot] != NULL) {
+		fclose(_fio.handles[slot]); 
+		_fio.handles[slot] = NULL;
+	}
+}
+
 void FioCloseAll(void)
 {
 	int i;
 
-	for (i = 0; i != lengthof(_fio.handles); i++) {
-		if (_fio.handles[i] != NULL) {
-			fclose(_fio.handles[i]);
-			_fio.handles[i] = NULL;
-		}
-	}
+	for (i = 0; i != lengthof(_fio.handles); i++)
+		FioCloseFile(i);
 }
 
 void FioOpenFile(int slot, const char *filename)
@@ -126,6 +130,7 @@
 	if (f == NULL)
 		error("Cannot open file '%s'", buf);
 
+	FioCloseFile(slot); // if file was opened before, close it
 	_fio.handles[slot] = f;
 	FioSeekToFile(slot << 24);
 }