diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 7e1e107bf7..1c1281b442 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.3.4.1+ (in development) ------------------------------------------------------------------------ - Fix: [#15096] Crash when placing entrances in the scenario editor near the map corner. +- Improved: [#3417] Crash dumps are now placed in their own folder. 0.3.4.1 (2021-07-25) ------------------------------------------------------------------------ diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 4f2f7095ae..893c5d0b23 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -1134,6 +1134,7 @@ namespace OpenRCT2 DIRID::SEQUENCE, DIRID::REPLAY, DIRID::LOG_DESYNCS, + DIRID::CRASH, }); } diff --git a/src/openrct2/PlatformEnvironment.cpp b/src/openrct2/PlatformEnvironment.cpp index 59480787a7..ba48098177 100644 --- a/src/openrct2/PlatformEnvironment.cpp +++ b/src/openrct2/PlatformEnvironment.cpp @@ -228,6 +228,7 @@ const char * PlatformEnvironment::DirectoryNamesOpenRCT2[] = "heightmap", // HEIGHTMAP "replay", // REPLAY "desyncs", // DESYNCS + "crash", // CRASH }; const char * PlatformEnvironment::FileNames[] = diff --git a/src/openrct2/PlatformEnvironment.h b/src/openrct2/PlatformEnvironment.h index ad8dd64428..91f3a47779 100644 --- a/src/openrct2/PlatformEnvironment.h +++ b/src/openrct2/PlatformEnvironment.h @@ -49,6 +49,7 @@ namespace OpenRCT2 HEIGHTMAP, // Contains heightmap data. REPLAY, // Contains recorded replays. LOG_DESYNCS, // Contains desync reports. + CRASH, // Contains crash dumps. }; enum class PATHID diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index 73c749b1b8..2fc168765a 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -28,10 +28,12 @@ # include "../Game.h" # include "../OpenRCT2.h" # include "../ParkFile.h" +# include "../PlatformEnvironment.h" # include "../Version.h" # include "../config/Config.h" # include "../core/Console.hpp" # include "../core/Guard.hpp" +# include "../core/Path.hpp" # include "../core/String.hpp" # include "../interface/Screenshot.h" # include "../localisation/Language.h" @@ -54,6 +56,8 @@ const wchar_t* _wszArchitecture = WSZ(OPENRCT2_ARCHITECTURE); # define BACKTRACE_TOKEN L"742b8d9d70c52df663e4f2449f90039cf9406f89e57ecb90b0f086ba16e33d20" +using namespace OpenRCT2; + // Note: uploading gzipped crash dumps manually requires specifying // 'Content-Encoding: gzip' header in HTTP request, but we cannot do that, // so just hope the file name with '.gz' suffix is enough. @@ -69,6 +73,7 @@ static bool UploadMinidump(const std::map& files, in L"post?format=minidump&token=" BACKTRACE_TOKEN); std::map parameters; parameters[L"product_name"] = L"openrct2"; + parameters[L"version"] = String::ToWideChar(gVersionInfoFull); // In case of releases this can be empty if (wcslen(_wszCommitSha1Short) > 0) { @@ -302,9 +307,10 @@ static bool OnCrash( static std::wstring GetDumpDirectory() { - char userDirectory[MAX_PATH]; - platform_get_user_directory(userDirectory, nullptr, sizeof(userDirectory)); - auto result = String::ToWideChar(userDirectory); + auto env = GetContext()->GetPlatformEnvironment(); + auto crashPath = env->GetDirectoryPath(DIRBASE::OPENRCT2, DIRID::CRASH); + + auto result = String::ToWideChar(crashPath.c_str()); return result; } diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 28a6bac8b4..049540f4f0 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -406,7 +406,10 @@ Banner* GetOrCreateBanner(BannerIndex id) { _banners.resize(id + 1); } - return &_banners[id]; + // Create the banner + auto& banner = _banners[id]; + banner.id = id; + return &banner; } return nullptr; }