summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributecontext.cpp2
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