From 09517caa8885e21694e8e326d6b79646d0e211b4 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Mon, 25 Sep 2017 17:26:26 +0200 Subject: [PATCH] Fix #6300: Saving track triggers assertion --- src/openrct2/ride/track_design_save.c | 2 +- src/openrct2/windows/Intent.cpp | 16 ++++++++-------- src/openrct2/windows/Intent.h | 8 +++++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/openrct2/ride/track_design_save.c b/src/openrct2/ride/track_design_save.c index 5bb7c14b97..70776b7dfa 100644 --- a/src/openrct2/ride/track_design_save.c +++ b/src/openrct2/ride/track_design_save.c @@ -182,7 +182,7 @@ bool track_design_save(uint8 rideIndex) Intent * intent = intent_create(WC_LOADSAVE); intent_set_uint(intent, INTENT_EXTRA_LOADSAVE_TYPE, LOADSAVETYPE_SAVE | LOADSAVETYPE_TRACK); - intent_set_string(intent, INTENT_EXTRA_CALLBACK, track_name); + intent_set_string(intent, INTENT_EXTRA_PATH, track_name); intent_set_pointer(intent, INTENT_EXTRA_CALLBACK, (void *) track_design_save_callback); context_open_intent(intent); intent_release(intent); diff --git a/src/openrct2/windows/Intent.cpp b/src/openrct2/windows/Intent.cpp index 52a5af541b..841b4556b5 100644 --- a/src/openrct2/windows/Intent.cpp +++ b/src/openrct2/windows/Intent.cpp @@ -9,8 +9,8 @@ Intent::Intent(rct_windowclass windowclass) Intent * Intent::putExtra(uint32 key, uint32 value) { IntentData data = {}; - data.uintVal = value; - data.type = IntentData::DT_UINT; + data.intVal.unsignedInt = value; + data.type = IntentData::DT_INT; _Data.insert(std::make_pair(key, data)); @@ -31,8 +31,8 @@ Intent * Intent::putExtra(uint32 key, void * value) Intent * Intent::putExtra(uint32 key, sint32 value) { IntentData data = {}; - data.sintVal = value; - data.type = IntentData::DT_SINT; + data.intVal.signedInt = value; + data.type = IntentData::DT_INT; _Data.insert(std::make_pair(key, data)); @@ -75,8 +75,8 @@ uint32 Intent::GetUIntExtra(uint32 key) } auto data = _Data.at(key); - openrct2_assert(data.type == IntentData::DT_UINT, "Actual type doesn't match requested type"); - return data.uintVal; + openrct2_assert(data.type == IntentData::DT_INT, "Actual type doesn't match requested type"); + return data.intVal.unsignedInt; } sint32 Intent::GetSIntExtra(uint32 key) @@ -87,8 +87,8 @@ sint32 Intent::GetSIntExtra(uint32 key) } auto data = _Data.at(key); - openrct2_assert(data.type == IntentData::DT_SINT, "Actual type doesn't match requested type"); - return data.sintVal; + openrct2_assert(data.type == IntentData::DT_INT, "Actual type doesn't match requested type"); + return data.intVal.signedInt; } utf8string Intent::GetStringExtra(uint32 key) diff --git a/src/openrct2/windows/Intent.h b/src/openrct2/windows/Intent.h index a00e002f3b..3193ae972f 100644 --- a/src/openrct2/windows/Intent.h +++ b/src/openrct2/windows/Intent.h @@ -11,10 +11,12 @@ #ifdef __cplusplus struct IntentData { - enum DATATYPE { DT_UINT, DT_SINT, DT_STRING, DT_POINTER } type; + enum DATATYPE { DT_INT, DT_STRING, DT_POINTER } type; - uint32 uintVal; - sint32 sintVal; + union { + uint32 unsignedInt; + sint32 signedInt; + } intVal; utf8string stringVal; void * pointerVal; };