From 40826f78a2cd547b901bdc40d993f96b277a8e37 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 21 Apr 2021 19:54:20 -0400 Subject: [PATCH] Fixed two crashes --- Source/BNetServer/Networking/Services/GameUtilities.cs | 2 +- Source/Framework/IO/ByteBuffer.cs | 8 ++++---- Source/Game/Entities/Item/Item.cs | 4 +++- Source/Game/Entities/Object/WorldObject.cs | 2 +- Source/Game/Networking/Packets/BattleGroundPackets.cs | 4 ++-- Source/Game/Networking/Packets/BattlefieldPackets.cs | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/BNetServer/Networking/Services/GameUtilities.cs b/Source/BNetServer/Networking/Services/GameUtilities.cs index 7c2170782..1df466b39 100644 --- a/Source/BNetServer/Networking/Services/GameUtilities.cs +++ b/Source/BNetServer/Networking/Services/GameUtilities.cs @@ -98,7 +98,7 @@ namespace BNetServer.Networking PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.UpdBnetLastLoginInfo); stmt.AddValue(0, GetRemoteIpEndPoint().ToString()); - stmt.AddValue(1, (byte)Enum.Parse(typeof(Locale), locale)); + stmt.AddValue(1, (byte)locale.ToEnum()); stmt.AddValue(2, os); stmt.AddValue(3, accountInfo.Id); diff --git a/Source/Framework/IO/ByteBuffer.cs b/Source/Framework/IO/ByteBuffer.cs index 7e8adf4cb..413582a3e 100644 --- a/Source/Framework/IO/ByteBuffer.cs +++ b/Source/Framework/IO/ByteBuffer.cs @@ -335,11 +335,11 @@ namespace Framework.IO WriteUInt32(packed); } - public bool WriteBit(object bit) + public bool WriteBit(bool bit) { --_bitPosition; - if (Convert.ToBoolean(bit)) + if (bit) BitValue |= (byte)(1 << _bitPosition); if (_bitPosition == 0) @@ -349,13 +349,13 @@ namespace Framework.IO _bitPosition = 8; BitValue = 0; } - return Convert.ToBoolean(bit); + return bit; } public void WriteBits(object bit, int count) { for (int i = count - 1; i >= 0; --i) - WriteBit((Convert.ToUInt32(bit) >> i) & 1); + WriteBit(((Convert.ToUInt32(bit) >> i) & 1) != 0); } public void WritePackedTime(long time) diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index 913cf1b9b..a8a3cc606 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -2921,7 +2921,7 @@ namespace Game.Entities public class AzeriteEmpoweredData { - public Array SelectedAzeritePowers = new(SharedConst.MaxAzeriteEmpoweredTier); + public int[] SelectedAzeritePowers = new int[SharedConst.MaxAzeriteEmpoweredTier]; } class ItemAdditionalLoadInfo @@ -2989,6 +2989,8 @@ namespace Game.Entities info.AzeriteItem.KnowledgeLevel = azeriteItemResult.Read(3); for (int i = 0; i < info.AzeriteItem.SelectedAzeriteEssences.Length; ++i) { + info.AzeriteItem.SelectedAzeriteEssences[i] = new(); + uint specializationId = azeriteItemResult.Read(4 + i * 4); if (!CliDB.ChrSpecializationStorage.ContainsKey(specializationId)) continue; diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index bf4938231..92305e920 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -493,7 +493,7 @@ namespace Game.Entities data.WriteBit(hasMovementScript); if (hasUnk3) - data.WriteBit(0); + data.WriteBit(false); data.FlushBits(); diff --git a/Source/Game/Networking/Packets/BattleGroundPackets.cs b/Source/Game/Networking/Packets/BattleGroundPackets.cs index 543a1c1a1..181207bac 100644 --- a/Source/Game/Networking/Packets/BattleGroundPackets.cs +++ b/Source/Game/Networking/Packets/BattleGroundPackets.cs @@ -137,7 +137,7 @@ namespace Game.Networking.Packets _worldPacket.WriteUInt32(Mapid); _worldPacket.WriteUInt32(ShutdownTimer); _worldPacket.WriteUInt32(StartTimer); - _worldPacket.WriteBit(ArenaFaction); + _worldPacket.WriteBit(ArenaFaction != 0); _worldPacket.WriteBit(LeftEarly); _worldPacket.FlushBits(); } @@ -629,7 +629,7 @@ namespace Game.Networking.Packets foreach (var pvpStat in Stats) pvpStat.Write(data); - data.WriteBit(Faction); + data.WriteBit(Faction != 0); data.WriteBit(IsInWorld); data.WriteBit(Honor.HasValue); data.WriteBit(PreMatchRating.HasValue); diff --git a/Source/Game/Networking/Packets/BattlefieldPackets.cs b/Source/Game/Networking/Packets/BattlefieldPackets.cs index ed93ec0ac..822441b71 100644 --- a/Source/Game/Networking/Packets/BattlefieldPackets.cs +++ b/Source/Game/Networking/Packets/BattlefieldPackets.cs @@ -63,7 +63,7 @@ namespace Game.Networking.Packets _worldPacket.WriteInt32(MaxLevel); _worldPacket.WriteInt32(MapID); _worldPacket.WriteUInt32(InstanceID); - _worldPacket.WriteBit(Index); + _worldPacket.WriteBit(Index != 0); _worldPacket.FlushBits(); }