Capture by value rather than by reference

This fixes a stack-use-after-return error in RenderableModelEntityItem.

Fixes #1128
This commit is contained in:
Dale Glass 2021-03-29 22:44:34 +02:00
parent 58fde3c159
commit 1759e360b1

View file

@ -1254,13 +1254,13 @@ void ModelEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPoint
if (_hasModel && !model) { if (_hasModel && !model) {
model = std::make_shared<Model>(nullptr, entity.get(), _created); model = std::make_shared<Model>(nullptr, entity.get(), _created);
connect(model.get(), &Model::requestRenderUpdate, this, &ModelEntityRenderer::requestRenderUpdate); connect(model.get(), &Model::requestRenderUpdate, this, &ModelEntityRenderer::requestRenderUpdate);
connect(model.get(), &Model::setURLFinished, this, [&](bool didVisualGeometryRequestSucceed) { connect(model.get(), &Model::setURLFinished, this, [=](bool didVisualGeometryRequestSucceed) {
_didLastVisualGeometryRequestSucceed = didVisualGeometryRequestSucceed; _didLastVisualGeometryRequestSucceed = didVisualGeometryRequestSucceed;
const render::ScenePointer& scene = AbstractViewStateInterface::instance()->getMain3DScene(); const render::ScenePointer& scene = AbstractViewStateInterface::instance()->getMain3DScene();
render::Transaction transaction; render::Transaction transaction;
transaction.updateItem<PayloadProxyInterface>(_renderItemID, [&](PayloadProxyInterface& self) { transaction.updateItem<PayloadProxyInterface>(_renderItemID, [=](PayloadProxyInterface& self) {
const render::ScenePointer& scene = AbstractViewStateInterface::instance()->getMain3DScene(); const render::ScenePointer& scene = AbstractViewStateInterface::instance()->getMain3DScene();
withWriteLock([&] { withWriteLock([=] {
setKey(didVisualGeometryRequestSucceed, _model); setKey(didVisualGeometryRequestSucceed, _model);
_model->setVisibleInScene(_visible, scene); _model->setVisibleInScene(_visible, scene);
_model->setCauterized(_cauterized, scene); _model->setCauterized(_cauterized, scene);