diff --git a/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp b/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp index 81c42cda1e..3649cf1129 100644 --- a/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp +++ b/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp @@ -17,6 +17,9 @@ EntityTreeHeadlessViewer::EntityTreeHeadlessViewer() } EntityTreeHeadlessViewer::~EntityTreeHeadlessViewer() { + if (_simulation) { + _simulation->setEntityTree(nullptr); // Break shared_ptr cycle. + } } void EntityTreeHeadlessViewer::init() { diff --git a/libraries/entities/src/EntityTreeElement.h b/libraries/entities/src/EntityTreeElement.h index f9f930a9fc..023e908e2c 100644 --- a/libraries/entities/src/EntityTreeElement.h +++ b/libraries/entities/src/EntityTreeElement.h @@ -161,7 +161,7 @@ public: virtual uint16_t size() const; bool hasEntities() const { return size() > 0; } - void setTree(EntityTreePointer tree) { _myTree.swap(std::weak_ptr(tree)); } + void setTree(EntityTreePointer tree) { _myTree = std::weak_ptr(tree); } EntityTreePointer getTree() const { return _myTree.lock(); } void addEntityItem(EntityItemPointer entity);