test: the server mock keeps a copy of the last bitstream sent

The bitstreams sent are usually on the sender's stack, so the pointer it kept was dangling once Send returned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-10-16 20:09:39 -05:00
parent fc6a7fbd52
commit 057c398c4e

View File

@@ -17,12 +17,16 @@ class dZoneManager;
class AssetManager; class AssetManager;
class dServerMock : public dServer { class dServerMock : public dServer {
RakNet::BitStream* sentBitStream = nullptr; // A copy: the bitstreams sent are usually on the sender's stack
std::unique_ptr<RakNet::BitStream> sentBitStream;
public: public:
dServerMock() {}; dServerMock() {};
~dServerMock() {}; ~dServerMock() {};
RakNet::BitStream* GetMostRecentBitStream() { return sentBitStream; }; RakNet::BitStream* GetMostRecentBitStream() { return sentBitStream.get(); };
void Send(RakNet::BitStream& bitStream, const SystemAddress& sysAddr, bool broadcast) override { sentBitStream = &bitStream; }; void Send(RakNet::BitStream& bitStream, const SystemAddress& sysAddr, bool broadcast) override {
sentBitStream = std::make_unique<RakNet::BitStream>(bitStream.GetData(), bitStream.GetNumberOfBytesUsed(), true);
sentBitStream->SetWriteOffset(bitStream.GetNumberOfBitsUsed());
};
void SetZoneId(unsigned int zoneId) { mZoneID = zoneId; } void SetZoneId(unsigned int zoneId) { mZoneID = zoneId; }
}; };