diff --git a/components/sceneutil/detourdebugdraw.cpp b/components/sceneutil/detourdebugdraw.cpp index bd03c8383e..24d29b0b70 100644 --- a/components/sceneutil/detourdebugdraw.cpp +++ b/components/sceneutil/detourdebugdraw.cpp @@ -86,15 +86,16 @@ namespace SceneUtil void DebugDraw::end() { + const osg::ref_ptr drawArrays + = new osg::DrawArrays(mMode, 0, static_cast(mVertices->size())); + osg::ref_ptr geometry(new osg::Geometry); geometry->setStateSet(mStateSet); - geometry->setVertexArray(mVertices); - geometry->setColorArray(mColors, osg::Array::BIND_PER_VERTEX); - geometry->addPrimitiveSet(new osg::DrawArrays(mMode, 0, static_cast(mVertices->size()))); + geometry->addPrimitiveSet(drawArrays); + geometry->setVertexArray(std::exchange(mVertices, nullptr)); + geometry->setColorArray(std::exchange(mColors, nullptr), osg::Array::BIND_PER_VERTEX); mGroup.addChild(geometry); - mColors.release(); - mVertices.release(); } void DebugDraw::addVertex(osg::Vec3f&& position)