summaryrefslogtreecommitdiff
path: root/src/qcommon
diff options
context:
space:
mode:
Diffstat (limited to 'src/qcommon')
-rw-r--r--src/qcommon/files.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/qcommon/files.c b/src/qcommon/files.c
index f18b96a3..10e00f11 100644
--- a/src/qcommon/files.c
+++ b/src/qcommon/files.c
@@ -3591,12 +3591,27 @@ restart if necessary
*/
qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
{
+ int retval;
+
if(fs_gamedirvar->modified)
{
- Com_GameRestart(checksumFeed, disconnect);
- return qtrue;
+ if(FS_FilenameCompare(lastValidGame, fs_gamedirvar->string) &&
+ (*lastValidGame || FS_FilenameCompare(fs_gamedirvar->string, com_basegame->string)) &&
+ (*fs_gamedirvar->string || FS_FilenameCompare(lastValidGame, com_basegame->string)))
+ {
+ Com_GameRestart(checksumFeed, disconnect);
+ return qtrue;
+ }
+ else
+ {
+ fs_gamedirvar->modified = qfalse;
+ retval = qtrue;
+ }
}
- else if(checksumFeed != fs_checksumFeed)
+ else
+ retval = qfalse;
+
+ if(checksumFeed != fs_checksumFeed)
FS_Restart(checksumFeed);
else if(fs_numServerPaks && !fs_reordered)
FS_ReorderPurePaks();