From a3a2fdcfc2f8737ed1c52672c473b4fe32ac2bc9 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 16 Nov 2011 16:54:37 +0000 Subject: (svn r23234) -Fix [FS#4840]: crash when after downloading content --- src/network/network_content.cpp | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/network') diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index 40bf03f97..d1a04c04e 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -530,13 +530,41 @@ void ClientNetworkContentSocketHandler::AfterDownload() if (GunzipFile(this->curInfo)) { unlink(GetFullFilename(this->curInfo, true)); - TarScanner ts; - ts.AddFile(GetFullFilename(this->curInfo, false), 0); - if (this->curInfo->type == CONTENT_TYPE_BASE_MUSIC) { /* Music can't be in a tar. So extract the tar! */ ExtractTar(GetFullFilename(this->curInfo, false), BASESET_DIR); unlink(GetFullFilename(this->curInfo, false)); + } else { + Subdirectory sd = NO_DIRECTORY; + switch (this->curInfo->type) { + case CONTENT_TYPE_AI: + sd = AI_DIR; + break; + + case CONTENT_TYPE_AI_LIBRARY: + sd = AI_LIBRARY_DIR; + break; + + case CONTENT_TYPE_BASE_GRAPHICS: + case CONTENT_TYPE_BASE_SOUNDS: + case CONTENT_TYPE_BASE_MUSIC: + sd = BASESET_DIR; + break; + + case CONTENT_TYPE_NEWGRF: + sd = NEWGRF_DIR; + break; + + case CONTENT_TYPE_SCENARIO: + case CONTENT_TYPE_HEIGHTMAP: + sd = SCENARIO_DIR; + break; + + default: NOT_REACHED(); + } + + TarScanner ts; + ts.AddFile(sd, GetFullFilename(this->curInfo, false)); } this->OnDownloadComplete(this->curInfo->id); -- cgit v1.2.3-70-g09d2