diff options
3 files changed, 6 insertions, 4 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp index 7ad2dc15b0d..394e5f4fff4 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp @@ -592,7 +592,8 @@ AttributeManager::asyncForAttribute(const vespalib::string &name, std::shared_pt return; } AttributeVector::SP attrsp = itr->second.getAttribute(); - _attributeFieldWriter.execute(_attributeFieldWriter.getExecutorId(attrsp->getNamePrefix()), + vespalib::string attrName = attrsp->getNamePrefix(); + _attributeFieldWriter.execute(_attributeFieldWriter.getExecutorId(attrName), [attr=std::move(attrsp), func=std::move(func)]() { (*func)(*attr); }); } diff --git a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp index 32231038691..8100333397c 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp @@ -205,9 +205,10 @@ FilterAttributeManager::asyncForAttribute(const vespalib::string &name, std::sha AttributeGuard::UP attr = _mgr->getAttribute(name); if (!attr) { return; } search::ISequencedTaskExecutor &attributeFieldWriter = getAttributeFieldWriter(); - attributeFieldWriter.execute(attributeFieldWriter.getExecutorId((*attr)->getNamePrefix()), + vespalib::string attrName = (*attr)->getNamePrefix(); + attributeFieldWriter.execute(attributeFieldWriter.getExecutorId(attrName), [attr=std::move(attr), func=std::move(func)]() mutable { - (*func)(dynamic_cast<const search::AttributeVector&>(*attr)); + (*func)(dynamic_cast<const search::AttributeVector&>(**attr)); }); } diff --git a/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp b/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp index f6ad4b75dfa..a39ff2c6378 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp @@ -70,7 +70,7 @@ AttributeContext::getAttributeList(std::vector<const IAttributeVector *> & list) void AttributeContext::asyncForAttribute(const vespalib::string &name, std::shared_ptr<IAttributeFunctor> func) const { - _manager.asyncForAttribute(name, func); + _manager.asyncForAttribute(name, std::move(func)); } } // namespace search |