From 1dd2e8b25d4b093eee6a9899c4da2625b2cdb863 Mon Sep 17 00:00:00 2001 From: HÃ¥vard Pettersen Date: Wed, 22 Jun 2022 11:11:09 +0000 Subject: fix more undefined behavior --- .../tests/attribute/enumeratedsave/enumeratedsave_test.cpp | 7 ++++--- .../vespa/searchlib/attribute/postinglistsearchcontext.cpp | 4 ++-- .../src/vespa/searchlib/common/geo_location_parser.cpp | 2 +- searchlib/src/vespa/searchlib/common/sortresults.cpp | 14 +++++++------- .../vespa/searchlib/test/imported_attribute_fixture.cpp | 5 +---- 5 files changed, 15 insertions(+), 17 deletions(-) (limited to 'searchlib') diff --git a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp index 92c3da40fe9..90127e9ae7b 100644 --- a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp +++ b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -184,8 +185,8 @@ MemAttr::bufEqual(const Buffer &lhs, const Buffer &rhs) const return true; if (!EXPECT_TRUE(lhs->getDataLen() == rhs->getDataLen())) return false; - if (!EXPECT_TRUE(memcmp(lhs->getData(), rhs->getData(), - lhs->getDataLen()) == 0)) + if (!EXPECT_TRUE(vespalib::memcmp_safe(lhs->getData(), rhs->getData(), + lhs->getDataLen()) == 0)) return false; return true; } @@ -480,7 +481,7 @@ EnumeratedSaveTest::getSearch(const V &vec, const T &term, bool prefix) buildTermQuery(query, vec.getName(), ss.str(), prefix); return (static_cast(vec)). - getSearch(vespalib::stringref(&query[0], query.size()), + getSearch(vespalib::stringref(query.data(), query.size()), SearchContextParams()); } diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp index c17627a5026..d8426ce1a45 100644 --- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp +++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp @@ -20,8 +20,8 @@ PostingListSearchContext(const IEnumStoreDictionary& dictionary, const ISearchContext &baseSearchCtx) : _dictionary(dictionary), _frozenDictionary(_dictionary.get_has_btree_dictionary() ? _dictionary.get_posting_dictionary().getFrozenView() : FrozenDictionary()), - _lowerDictItr(BTreeNode::Ref(), _frozenDictionary.getAllocator()), - _upperDictItr(BTreeNode::Ref(), _frozenDictionary.getAllocator()), + _lowerDictItr(_dictionary.get_has_btree_dictionary() ? DictionaryConstIterator(BTreeNode::Ref(), _frozenDictionary.getAllocator()) : DictionaryConstIterator()), + _upperDictItr(_dictionary.get_has_btree_dictionary() ? DictionaryConstIterator(BTreeNode::Ref(), _frozenDictionary.getAllocator()) : DictionaryConstIterator()), _uniqueValues(0u), _docIdLimit(docIdLimit), _dictSize(_frozenDictionary.size()), diff --git a/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp b/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp index 8794169b4a6..d829e1b93e4 100644 --- a/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp +++ b/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp @@ -15,7 +15,7 @@ LOG_SETUP(".searchlib.common.geo_location_parser"); namespace { int getInt(const char * &p) { - int val; + uint32_t val; bool isminus; val = 0; isminus = false; diff --git a/searchlib/src/vespa/searchlib/common/sortresults.cpp b/searchlib/src/vespa/searchlib/common/sortresults.cpp index f1756712d2c..59a47dd3312 100644 --- a/searchlib/src/vespa/searchlib/common/sortresults.cpp +++ b/searchlib/src/vespa/searchlib/common/sortresults.cpp @@ -209,9 +209,9 @@ FastS_SortSpec::realloc(uint32_t n, size_t & variableWidth, uint32_t & available variableWidth *= 2; available += variableWidth * n; dataSize += variableWidth * n; - uint32_t byteUsed = mySortData - &_binarySortData[0]; + uint32_t byteUsed = mySortData - _binarySortData.data(); _binarySortData.resize(dataSize); - return &_binarySortData[0] + byteUsed; + return _binarySortData.data() + byteUsed; } void @@ -237,7 +237,7 @@ FastS_SortSpec::initSortData(const RankedHit *hits, uint32_t n) uint32_t dataSize = (fixedWidth + variableWidth) * n; uint32_t available = dataSize; _binarySortData.resize(dataSize); - uint8_t *mySortData = &_binarySortData[0]; + uint8_t *mySortData = _binarySortData.data(); _sortDataArray.resize(n); @@ -342,7 +342,7 @@ void FastS_SortSpec::copySortData(uint32_t offset, uint32_t n, uint32_t *idx, char *buf) { - const uint8_t * sortData = &_binarySortData[0]; + const uint8_t * sortData = _binarySortData.data(); uint32_t totalLen = 0; for (uint32_t i = offset; i < (offset + n); ++i, ++idx) { const uint8_t * src = sortData + _sortDataArray[i]._idx; @@ -378,7 +378,7 @@ inline int FastS_SortSpec::Compare(const FastS_SortSpec *self, const SortData &a, const SortData &b) { - const uint8_t * ref = &(self->_binarySortData[0]); + const uint8_t * ref = self->_binarySortData.data(); uint32_t len = a._len < b._len ? a._len : b._len; int retval = memcmp(ref + a._idx, ref + b._idx, len); @@ -448,10 +448,10 @@ void FastS_SortSpec::sortResults(RankedHit a[], uint32_t n, uint32_t topn) { initSortData(a, n); - SortData * sortData = &_sortDataArray[0]; + SortData * sortData = _sortDataArray.data(); { Array radixScratchPad(n, Alloc::alloc(0, MMAP_LIMIT)); - search::radix_sort(SortDataRadix(&_binarySortData[0]), StdSortDataCompare(&_binarySortData[0]), SortDataEof(), 1, sortData, n, &radixScratchPad[0], 0, 96, topn); + search::radix_sort(SortDataRadix(_binarySortData.data()), StdSortDataCompare(_binarySortData.data()), SortDataEof(), 1, sortData, n, radixScratchPad.data(), 0, 96, topn); } for (uint32_t i(0), m(_sortDataArray.size()); i < m; ++i) { a[i]._rankValue = _sortDataArray[i]._rankValue; diff --git a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp index d240e5a7c6c..d1bb464fc37 100644 --- a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp +++ b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp @@ -10,10 +10,7 @@ namespace search { namespace { struct MockReadGuard : public IDocumentMetaStoreContext::IReadGuard { - virtual const search::IDocumentMetaStore &get() const override { - search::IDocumentMetaStore *nullStore = nullptr; - return static_cast(*nullStore); - } + virtual const search::IDocumentMetaStore &get() const override { abort(); } }; } -- cgit v1.2.3