From 06d2ef6101ea9909515d2904a5a804287fce3802 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sun, 29 Jul 2018 19:31:47 +0100 Subject: [PATCH] Non-trivial copiable object fixes, limited to the engine's itself not the third parties parts. --- source/game/obj/blueprint.cpp | 2 +- source/game/scripts/bind_design.cpp | 2 +- source/util/include/frustum.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/game/obj/blueprint.cpp b/source/game/obj/blueprint.cpp index 9af05d8..45440b5 100644 --- a/source/game/obj/blueprint.cpp +++ b/source/game/obj/blueprint.cpp @@ -132,7 +132,7 @@ void Blueprint::create(Object* obj, const Design* design) { data[i] = new CScriptAny(devices.scripts.server->engine); memset(effectorStates, 0, design->effectorStateCount * sizeof(double)); - memset(effectorTargets, 0, design->effectorCount * sizeof(EffectorTarget)); + memset(reinterpret_cast(effectorTargets), 0, design->effectorCount * sizeof(EffectorTarget)); for(unsigned i = 0; i < cnt; ++i) { auto& sys = design->subsystems[i]; diff --git a/source/game/scripts/bind_design.cpp b/source/game/scripts/bind_design.cpp index 8832a8d..418a645 100644 --- a/source/game/scripts/bind_design.cpp +++ b/source/game/scripts/bind_design.cpp @@ -913,7 +913,7 @@ public: type.grab(); states = new double[type.type.stateCount](); - memset(&target, 0, sizeof(EffectorTarget)); + memset(reinterpret_cast(&target), 0, sizeof(EffectorTarget)); target.tracking = vec3d::front(); } diff --git a/source/util/include/frustum.h b/source/util/include/frustum.h index 2eeed8d..b735235 100644 --- a/source/util/include/frustum.h +++ b/source/util/include/frustum.h @@ -25,7 +25,7 @@ struct frustum { } void operator=(const frustum& other) { - memcpy(this, &other, sizeof(frustum)); + memcpy(reinterpret_cast(this), &other, sizeof(frustum)); } bool overlaps(const vec3d& center, double radius) const { @@ -34,4 +34,4 @@ struct frustum { return false; return true; } -}; \ No newline at end of file +};