From 4602248cd022d96c859c4ddfd5359a648d9a9fe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 22 Sep 2021 17:01:32 +0200 Subject: [PATCH] Trade: ensure the deprecated SceneData constructor uses default deleters. Otherwise the instances wouldn't be usable from AbstractImporter subclasses. --- src/Magnum/Trade/SceneData.cpp | 8 +++++--- src/Magnum/Trade/Test/SceneDataTest.cpp | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Magnum/Trade/SceneData.cpp b/src/Magnum/Trade/SceneData.cpp index cc83bb710..69456234d 100644 --- a/src/Magnum/Trade/SceneData.cpp +++ b/src/Magnum/Trade/SceneData.cpp @@ -749,9 +749,11 @@ SceneData::SceneData(std::vector children2D, std::vector{1}; + _fields[0] = SceneFieldData{SceneField::Parent, objects, parents}; Utility::copy(children, objects); constexpr Int parent[]{-1}; Utility::copy(Containers::stridedArrayView(parent).broadcasted<0>(parents.size()), parents); diff --git a/src/Magnum/Trade/Test/SceneDataTest.cpp b/src/Magnum/Trade/Test/SceneDataTest.cpp index e990ccf65..660371e8e 100644 --- a/src/Magnum/Trade/Test/SceneDataTest.cpp +++ b/src/Magnum/Trade/Test/SceneDataTest.cpp @@ -1508,6 +1508,11 @@ void SceneDataTest::constructDeprecated() { is set directly */ CORRADE_COMPARE(scene.is2D(), data.is2D); CORRADE_COMPARE(scene.is3D(), data.is3D); + + /* The deleters have to be trivial, otherwise this instance wouldn't be + usable from an AbstractImporter */ + CORRADE_VERIFY(!scene.releaseFieldData().deleter()); + CORRADE_VERIFY(!scene.releaseData().deleter()); } void SceneDataTest::constructDeprecatedBoth2DAnd3D() {