diff --git a/src/PerfView/PerfView.csproj b/src/PerfView/PerfView.csproj index 8815c8665..02a1dbc08 100644 --- a/src/PerfView/PerfView.csproj +++ b/src/PerfView/PerfView.csproj @@ -254,6 +254,13 @@ System.Reflection.Metadata.dll False + + Non-Resx + false + .\System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.Unsafe.dll + False + Non-Resx false diff --git a/src/TraceEvent/TraceEvent.cs b/src/TraceEvent/TraceEvent.cs index e93624e38..1414313d6 100644 --- a/src/TraceEvent/TraceEvent.cs +++ b/src/TraceEvent/TraceEvent.cs @@ -15,6 +15,7 @@ #endif using System.IO; using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; using Address = System.UInt64; @@ -4368,19 +4369,19 @@ internal static unsafe Guid ReadGuid(IntPtr pointer, int offset) } internal static unsafe double ReadDouble(IntPtr pointer, int offset) { - return *((double*)((byte*)pointer.ToPointer() + offset)); + return Unsafe.ReadUnaligned((byte*)pointer.ToPointer() + offset); } internal static unsafe float ReadSingle(IntPtr pointer, int offset) { - return *((float*)((byte*)pointer.ToPointer() + offset)); + return Unsafe.ReadUnaligned((byte*)pointer.ToPointer() + offset); } internal static unsafe long ReadInt64(IntPtr pointer, int offset) { - return *((long*)((byte*)pointer.ToPointer() + offset)); + return Unsafe.ReadUnaligned((byte*)pointer.ToPointer() + offset); } internal static unsafe int ReadInt32(IntPtr pointer, int offset) { - return *((int*)((byte*)pointer.ToPointer() + offset)); + return Unsafe.ReadUnaligned((byte*)pointer.ToPointer() + offset); } internal static unsafe short ReadInt16(IntPtr pointer, int offset) { diff --git a/src/TraceEvent/TraceEvent.csproj b/src/TraceEvent/TraceEvent.csproj index 079957daf..97bb4a419 100644 --- a/src/TraceEvent/TraceEvent.csproj +++ b/src/TraceEvent/TraceEvent.csproj @@ -68,6 +68,7 @@ +