diff options
author | Tor Brede Vekterli <vekterli@oath.com> | 2018-07-25 14:24:21 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@oath.com> | 2018-07-25 14:24:21 +0000 |
commit | 12c8f3005e202b31a8e0ff3816ce9d714a269046 (patch) | |
tree | a5d9ba0eedc49df2cea2dbdfea677c4c37ed3775 /searchsummary | |
parent | e3af3d215feb1e416b27b92bbf421dde281f3a09 (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')
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); } |