From 67b015d76b704de4efa69d921559cc50b512fa25 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 14 Aug 2018 23:45:42 -0400 Subject: [PATCH] Arm64Emitter: Get rid of a pointer cast within SetJumpTarget() Type punning like this is undefined behavior. Instead, we use std::memcpy to copy the necessary data over, which is well defined (as it treats both the source and destination as unsigned char). --- Source/Core/Common/Arm64Emitter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp index 794b97730b..124ae218a2 100644 --- a/Source/Core/Common/Arm64Emitter.cpp +++ b/Source/Core/Common/Arm64Emitter.cpp @@ -969,7 +969,8 @@ void ARM64XEmitter::SetJumpTarget(FixupBranch const& branch) inst = (0x25 << 26) | MaskImm26(distance); break; } - *(u32*)branch.ptr = inst; + + std::memcpy(branch.ptr, &inst, sizeof(inst)); } FixupBranch ARM64XEmitter::CBZ(ARM64Reg Rt)