From e1b99479a2db254d40ccd7ea0a5ee524f1582b65 Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Wed, 7 Feb 2018 23:51:01 +0100 Subject: [PATCH] Make custom paths absolute Then gCustomUserDataPath and relatant variables are set, they overwrite the gBasePath array, which uses absolute paths. This commit makes the custom paths absolute as well, to prevent issues with assumptions in the code (file dialog for example). --- src/openrct2/cmdline/RootCommands.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/openrct2/cmdline/RootCommands.cpp b/src/openrct2/cmdline/RootCommands.cpp index 714a524e6f..31e423c27f 100644 --- a/src/openrct2/cmdline/RootCommands.cpp +++ b/src/openrct2/cmdline/RootCommands.cpp @@ -27,6 +27,7 @@ #include "../core/Memory.hpp" #include "../core/Path.hpp" #include "../core/String.hpp" +#include "../core/Util.hpp" #include "../network/network.h" #include "../object/ObjectRepository.h" #include "../OpenRCT2.h" @@ -197,25 +198,29 @@ exitcode_t CommandLine::HandleCommandDefault() if (_userDataPath != nullptr) { - String::Set(gCustomUserDataPath, sizeof(gCustomUserDataPath), _userDataPath); + utf8 absolutePath[MAX_PATH]{}; + Path::GetAbsolute(absolutePath, Util::CountOf(absolutePath), _userDataPath); + String::Set(gCustomUserDataPath, Util::CountOf(gCustomUserDataPath), absolutePath); Memory::Free(_userDataPath); } if (_openrctDataPath != nullptr) { - String::Set(gCustomOpenrctDataPath, sizeof(gCustomOpenrctDataPath), _openrctDataPath); + utf8 absolutePath[MAX_PATH]{}; + Path::GetAbsolute(absolutePath, Util::CountOf(absolutePath), _openrctDataPath); + String::Set(gCustomOpenrctDataPath, Util::CountOf(gCustomOpenrctDataPath), absolutePath); Memory::Free(_openrctDataPath); } if (_rct2DataPath != nullptr) { - String::Set(gCustomRCT2DataPath, sizeof(gCustomRCT2DataPath), _rct2DataPath); + String::Set(gCustomRCT2DataPath, Util::CountOf(gCustomRCT2DataPath), _rct2DataPath); Memory::Free(_rct2DataPath); } if (_password != nullptr) { - String::Set(gCustomPassword, sizeof(gCustomPassword), _password); + String::Set(gCustomPassword, Util::CountOf(gCustomPassword), _password); Memory::Free(_password); }