fix: Fixes sending packets and sidesteps a major issue with stackalloc and PGO in .NET 8 (#1607)
### Summary - Works around a sneaky edge case bug in the JIT with stackalloc where sometimes the buffer is not zero'd. - Fixes SendDisplayBoatHS - Fixes sending health bars in the `SendEverything()` logic. - Fixes a bug in sizing for some string helper functions. ### Developer Note We are enabled `SkipLocalsInit` - do not rely on `stackalloc` to be zero'd. To zero the buffer, use `span.Clear();` Closes #1606
This commit is contained in:
parent
79ba1ea917
commit
03f850fe03
18 changed files with 67 additions and 76 deletions
|
|
@ -35,24 +35,7 @@ public static class PacketUtilities
|
|||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Span<byte> InitializePacket(this Span<byte> buffer)
|
||||
{
|
||||
#if NO_LOCAL_INIT
|
||||
if (buffer != null)
|
||||
{
|
||||
buffer[0] = 0;
|
||||
}
|
||||
#endif
|
||||
return buffer;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Span<byte> InitializePackets(this Span<byte> buffer, int width)
|
||||
{
|
||||
#if NO_LOCAL_INIT
|
||||
for (var i = 0; i < buffer.Length; i += width)
|
||||
{
|
||||
buffer[i] = 0;
|
||||
}
|
||||
#endif
|
||||
buffer[0] = 0;
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue