From d56097080782a93c514873f77347de65dde8b579 Mon Sep 17 00:00:00 2001 From: wish Date: Tue, 2 Aug 2022 16:21:56 +1000 Subject: [PATCH] prevent object index reuse --- server/channelserver/handlers_object.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/channelserver/handlers_object.go b/server/channelserver/handlers_object.go index 08252f61a..8984c21bf 100644 --- a/server/channelserver/handlers_object.go +++ b/server/channelserver/handlers_object.go @@ -10,9 +10,25 @@ import ( func handleMsgSysCreateObject(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgSysCreateObject) + // Prevent reusing an object index + var nextID uint32 + for { + exists := false + nextID = s.stage.NextObjectID() + for _, object := range s.stage.objects { + if object.id == nextID { + exists = true + break + } + } + if exists == false { + break + } + } + s.stage.Lock() newObj := &Object{ - id: s.stage.NextObjectID(), + id: nextID, ownerCharID: s.charID, x: pkt.X, y: pkt.Y,