summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-07-25 14:24:21 +0000
committerTor Brede Vekterli <vekterli@oath.com>2018-07-25 14:24:21 +0000
commit12c8f3005e202b31a8e0ff3816ce9d714a269046 (patch)
treea5d9ba0eedc49df2cea2dbdfea677c4c37ed3775 /searchsummary
parente3af3d215feb1e416b27b92bbf421dde281f3a09 (diff)
Remove stringref::c_str()
The expected semantics of c_str() (a null-terminated string) cannot be satisfied with a string reference, so remove the function entirely to prevent people from using it in buggy ways. Replaces c_str() with data() in places where it is presumed safe, otherwise constructs temporary string instances. Certain callsites have been de-stringref'd in favor of regular strings, in particular where C APIs have been transitively called. The vast majority of these were called with string parameters anyway, so should not cause much extra allocation.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp2
5 files changed, 8 insertions, 8 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
index c7eb63a4480..73c62db864c 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
@@ -159,7 +159,7 @@ public:
{
if (item->_si != NULL) {
*len = item->_si->getIndexName().size();
- return item->_si->getIndexName().c_str();
+ return item->_si->getIndexName().data();
} else {
*len = item->_data->_indexlen;
return item->_data->_index;
@@ -221,7 +221,7 @@ JuniperQueryAdapter::Traverse(juniper::IQueryVisitor *v) const
case search::ParseItem::ITEM_PURE_WEIGHTED_STRING:
{
vespalib::stringref term = iterator.getTerm();
- v->VisitKeyword(&item, term.c_str(), term.size(), false, isSpecialToken);
+ v->VisitKeyword(&item, term.data(), term.size(), false, isSpecialToken);
}
break;
case search::ParseItem::ITEM_NUMTERM:
@@ -257,7 +257,7 @@ JuniperQueryAdapter::Traverse(juniper::IQueryVisitor *v) const
case search::ParseItem::ITEM_SUBSTRINGTERM:
{
vespalib::stringref term = iterator.getTerm();
- v->VisitKeyword(&item, term.c_str(), term.size(), true, isSpecialToken);
+ v->VisitKeyword(&item, term.data(), term.size(), true, isSpecialToken);
}
break;
case search::ParseItem::ITEM_ANY:
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h b/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
index 62f2510c17b..15a367761ec 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
@@ -37,7 +37,7 @@ public:
_text(textBegin, textEnd - textBegin), _stem(stemBegin, stemEnd - stemBegin), _type(type) {}
const vespalib::stringref & getText() const { return _text; }
const vespalib::stringref & getStem() const { return _stem; }
- bool hasStem() const { return _stem.c_str() != NULL; }
+ bool hasStem() const { return _stem.data() != NULL; }
Type getType() const { return _type; }
};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
index 3a60db52cf3..d75ca47dd33 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
@@ -195,7 +195,7 @@ KeywordExtractor::ExtractKeywords(vespalib::stringref buf) const
phraseterms_was_added = true;
}
- keywords.append(term.c_str(), term.size());
+ keywords.append(term.data(), term.size());
}
}
}
@@ -218,7 +218,7 @@ KeywordExtractor::ExtractKeywords(vespalib::stringref buf) const
vespalib::stringref term = si.getTerm();
if ( !term.empty() && useful(creator)) {
// An actual string to add
- keywords.append(term.c_str(), term.size());
+ keywords.append(term.data(), term.size());
keywords.append("\0", 1);
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
index 7097012c5ea..9748bdac3b3 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
@@ -47,7 +47,7 @@ RankFeaturesDFW::insertField(uint32_t docid, GeneralResult *, GetDocsumsState *s
featureDump(json, names[i], values[i]);
}
json.endObject();
- vespalib::Memory value(json.toString().c_str(),
+ vespalib::Memory value(json.toString().data(),
json.toString().size());
if (type == RES_STRING || type == RES_LONG_STRING) {
target.insertString(value);
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
index c21d6c40066..a5fb9bd8539 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
@@ -68,7 +68,7 @@ SummaryFeaturesDFW::insertField(uint32_t docid, GeneralResult *, GetDocsumsState
json.appendDouble(0.0);
}
json.endObject();
- vespalib::Memory value(json.toString().c_str(), json.toString().size());
+ vespalib::Memory value(json.toString().data(), json.toString().size());
if (type == RES_STRING || type == RES_LONG_STRING) {
target.insertString(value);
}