Fix #6300: Saving track triggers assertion

This commit is contained in:
Marijn van der Werf 2017-09-25 17:26:26 +02:00 committed by Michał Janiszewski
parent 18db4a5274
commit 09517caa88
3 changed files with 14 additions and 12 deletions

View File

@ -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);

View File

@ -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)

View File

@ -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;
};