use bit_cast instead of reinterpret_cast

This commit is contained in:
Martin Michelsen
2023-07-04 11:20:40 -07:00
parent 80ae6ecac8
commit 1c9239bade
+3 -2
View File
@@ -3,6 +3,7 @@
#include <stdint.h> #include <stdint.h>
#include <array> #include <array>
#include <bit>
#include <deque> #include <deque>
#include <map> #include <map>
#include <phosg/Strings.hh> #include <phosg/Strings.hh>
@@ -1198,7 +1199,7 @@ std::string disassemble_quest_script(const void* data, size_t size, GameVersion
case Type::FLOAT32: { case Type::FLOAT32: {
float v = cmd_r.get_f32l(); float v = cmd_r.get_f32l();
if (def->flags & QuestScriptOpcodeDefinition::Flag::PRESERVE_ARG_STACK) { if (def->flags & QuestScriptOpcodeDefinition::Flag::PRESERVE_ARG_STACK) {
arg_stack_values.emplace_back(ArgStackValue::Type::INT, *reinterpret_cast<const uint32_t*>(&v)); arg_stack_values.emplace_back(ArgStackValue::Type::INT, bit_cast<uint32_t>(v));
} }
dasm_arg = string_printf("%g", v); dasm_arg = string_printf("%g", v);
break; break;
@@ -1320,7 +1321,7 @@ std::string disassemble_quest_script(const void* data, size_t size, GameVersion
dasm_arg = string_printf("(float)r%" PRIu32, arg_value.as_int); dasm_arg = string_printf("(float)r%" PRIu32, arg_value.as_int);
break; break;
case ArgStackValue::Type::INT: case ArgStackValue::Type::INT:
dasm_arg = string_printf("%g", *reinterpret_cast<const float*>(&arg_value.as_int)); dasm_arg = string_printf("%g", bit_cast<float>(arg_value.as_int));
break; break;
default: default:
dasm_arg = "/* invalid-type */"; dasm_arg = "/* invalid-type */";