From 7ccd5373628b83b07d4d7e89f93b96dce115d87d Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 6 Nov 2016 17:12:03 +0000 Subject: [PATCH] Fix build break from 30f9233 Commit 30f9233b36e9e546a7479fd152331b7b0d689d47 introduced a test for Game_Mode, which does not exist, rather than Game_mode, which does exist. However, the test for game mode is unnecessary. Objects of type OBJ_NONE are always in segment_none and no object of any other type should be in segment_none. Use that fact to test obj->type instead of obj->segnum during multiplayer object clobber, so that multiplayer can overwrite unallocated objects without accessing any undefined fields and without making object::segnum a defined field. Fixes: 30f9233b36e9e546a7479fd152331b7b0d689d47 ("Reverted 2e6aa0f0811455537b8cc868af56c5d644fa6798 and partially reverted 7064fcccbaf4ae3c71f197ff094d5d4de44c3816 to still allow segnum and signature init for multiplayer games, keeping consistency during object sync.") --- similar/main/net_udp.cpp | 2 +- similar/main/object.cpp | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/similar/main/net_udp.cpp b/similar/main/net_udp.cpp index 3472da5f7..cc41dffe8 100644 --- a/similar/main/net_udp.cpp +++ b/similar/main/net_udp.cpp @@ -2047,7 +2047,7 @@ static void net_udp_read_object_packet( ubyte *data ) } if (objnum != object_none) { auto obj = vobjptridx(objnum); - if (obj->segnum != segment_none) + if (obj->type != OBJ_NONE) { obj_unlink(obj); Assert(obj->segnum == segment_none); diff --git a/similar/main/object.cpp b/similar/main/object.cpp index 8c68b0111..640848e77 100644 --- a/similar/main/object.cpp +++ b/similar/main/object.cpp @@ -828,12 +828,6 @@ void init_objects() free_obj_list[i] = i; const auto &&objp = vobjptr(i); objp->type = OBJ_NONE; - // init segment and signature for multiplayer object sync. - if (Game_Mode & GM_MULTI) - { - objp->segnum = segment_none; - objp->signature = obj_get_signature(); - } } range_for (auto &j, Segments)